JMS (Java Message Service)
Spring提供了一个JMS集成框架,类似于Spring对JDBC API的集成方式,简化了JMS API的使用。
JMS大致可以分为两个功能领域,即消息的生产和消费。 JmsTemplate
类用于消息的生产和同步消息接收。对于类似于Jakarta EE的消息驱动Bean风格的异步接收,Spring提供了一些消息监听容器,您可以使用它们来创建基于消息的POJO(MDP)。Spring还提供了一种声明性的方式来创建消息监听器。
org.springframework.jms.core
包提供了使用JMS的核心功能。它包含了简化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消息之间进行转换。
org.springframework.jms.support.destination
包提供了管理JMS目的地的各种策略,例如为存储在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约定,因此通过相应的配置,它确实支持这种情况。但请仅考虑用于过渡场景。 |