|
对于最新的稳定版本,请使用 Spring Framework 7.0.6! |
JMS(Java消息服务)
Spring 提供了一个 JMS 集成框架,其简化 JMS API 的使用方式与 Spring 对 JDBC API 的集成方式非常相似。
JMS 的功能大致可分为两个方面,即消息的发送和接收。用于消息发送和同步接收消息的类是 JmsTemplate。对于类似于 Jakarta EE 消息驱动 Bean 风格的异步接收,Spring 提供了多种消息监听器容器,可用于创建消息驱动的 POJO(MDP)。Spring 还提供了声明式的方式来创建消息监听器。
org.springframework.jms.core 包提供了使用 JMS 的核心功能。它包含简化 JMS 使用的 JMS 模板类,通过处理资源的创建和释放,就像 JdbcTemplate 对 JDBC 所做的那样。Spring 模板类共有的设计原则是提供辅助方法来执行常见操作,并且对于更复杂的用法,将处理任务的核心部分委托给用户实现的回调接口。JMS 模板遵循相同的設計。這些類為發送消息、同步消費消息以及向用戶公開 JMS 會話和消息生產者提供了多種便利方法。
org.springframework.jms.support 包提供了 JMSException 翻译功能。该翻译将已检查的 JMSException 类层次结构转换为未检查异常的镜像层次结构。如果存在任何特定于提供者的已检查 jakarta.jms.JMSException 的子类,此异常将被封装在未检查的 UncategorizedJmsException 中。
org.springframework.jms.support.converter 包提供了一个 MessageConverter
抽象,用于在 Java 对象和 JMS 消息之间进行转换。
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.
org.springframework.jms.annotation 包提供了通过使用 @JmsListener 支持注解驱动的监听器端点所需的基础设施
org.springframework.jms.config 包提供了 jms 命名空间的解析器实现,以及用于配置监听器容器和创建监听器端点的 Java 配置支持。
最后,org.springframework.jms.connection 包提供了一个适用于独立应用程序的ConnectionFactory的实现。它还包含 Spring 的 PlatformTransactionManager 对 JMS 的实现(巧妙地命名为 JmsTransactionManager)。这使得 JMS 可以无缝集成到 Spring 的事务管理机制中作为事务资源。
|
自 Spring Framework 5 起,Spring 的 JMS 包完全支持 JMS 2.0,并且在运行时需要存在 JMS 2.0 API。我们建议使用与 JMS 2.0 兼容的提供者。 如果你在系统中使用的是较旧的消息代理,可以尝试升级到与JMS 2.0兼容的驱动程序。或者,也可以尝试使用基于JMS 1.1的驱动程序,只需将JMS 2.0 API的jar包放在类路径中,但仅对驱动程序使用与JMS 1.1兼容的API。Spring的JMS支持默认遵循JMS 1.1的约定,因此通过相应的配置它确实支持这种场景。然而,请仅在迁移场景中考虑此方法。 |