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 消息之间进行转换。
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 约定,因此通过相应的配置,它确实支持这种情况。但是,请仅在过渡场景中考虑这一点。 |