对于最新的稳定版本,请使用 Spring Framework 7.0.6!spring-doc.cadn.net.cn

JMS(Java消息服务)

Spring 提供了一个 JMS 集成框架,其简化 JMS API 的使用方式与 Spring 对 JDBC API 的集成方式非常相似。spring-doc.cadn.net.cn

JMS 的功能大致可分为两个方面,即消息的发送和接收。用于消息发送和同步接收消息的类是 JmsTemplate。对于类似于 Jakarta EE 消息驱动 Bean 风格的异步接收,Spring 提供了多种消息监听器容器,可用于创建消息驱动的 POJO(MDP)。Spring 还提供了声明式的方式来创建消息监听器。spring-doc.cadn.net.cn

org.springframework.jms.core 包提供了使用 JMS 的核心功能。它包含简化 JMS 使用的 JMS 模板类,通过处理资源的创建和释放,就像 JdbcTemplate 对 JDBC 所做的那样。Spring 模板类共有的设计原则是提供辅助方法来执行常见操作,并且对于更复杂的用法,将处理任务的核心部分委托给用户实现的回调接口。JMS 模板遵循相同的設計。這些類為發送消息、同步消費消息以及向用戶公開 JMS 會話和消息生產者提供了多種便利方法。spring-doc.cadn.net.cn

org.springframework.jms.support 包提供了 JMSException 翻译功能。该翻译将已检查的 JMSException 类层次结构转换为未检查异常的镜像层次结构。如果存在任何特定于提供者的已检查 jakarta.jms.JMSException 的子类,此异常将被封装在未检查的 UncategorizedJmsException 中。spring-doc.cadn.net.cn

org.springframework.jms.support.converter 包提供了一个 MessageConverter 抽象,用于在 Java 对象和 JMS 消息之间进行转换。spring-doc.cadn.net.cn

The org.springframework.jms.support.destination package provides various strategies for managing JMS destinations, such as providing a service locator for destinations stored in JNDI.spring-doc.cadn.net.cn

org.springframework.jms.annotation 包提供了通过使用 @JmsListener 支持注解驱动的监听器端点所需的基础设施spring-doc.cadn.net.cn

org.springframework.jms.config 包提供了 jms 命名空间的解析器实现,以及用于配置监听器容器和创建监听器端点的 Java 配置支持。spring-doc.cadn.net.cn

最后,org.springframework.jms.connection 包提供了一个适用于独立应用程序的ConnectionFactory的实现。它还包含 Spring 的 PlatformTransactionManager 对 JMS 的实现(巧妙地命名为 JmsTransactionManager)。这使得 JMS 可以无缝集成到 Spring 的事务管理机制中作为事务资源。spring-doc.cadn.net.cn

自 Spring Framework 5 起,Spring 的 JMS 包完全支持 JMS 2.0,并且在运行时需要存在 JMS 2.0 API。我们建议使用与 JMS 2.0 兼容的提供者。spring-doc.cadn.net.cn

如果你在系统中使用的是较旧的消息代理,可以尝试升级到与JMS 2.0兼容的驱动程序。或者,也可以尝试使用基于JMS 1.1的驱动程序,只需将JMS 2.0 API的jar包放在类路径中,但仅对驱动程序使用与JMS 1.1兼容的API。Spring的JMS支持默认遵循JMS 1.1的约定,因此通过相应的配置它确实支持这种场景。然而,请仅在迁移场景中考虑此方法。spring-doc.cadn.net.cn