Spring 提供了一个 JMS 集成框架,它大大简化了 JMS API 的使用 与 Spring 对 JDBC API 的集成方式相同。

JMS 大致可以分为两个功能领域,即生产和 消息的消耗。该类用于消息生成和 同步消息接收。用于类似于 Jakarta EE 的异步接收 消息驱动的 Bean 样式,Spring 提供了许多消息侦听器容器,这些容器可以 可用于创建消息驱动的 POJO (MDP)。Spring 还提供了一种声明方式 以创建消息侦听器。JmsTemplate

该软件包提供了用于使用 JMS的。它包含 JMS 模板类,这些类通过处理 创建和发布资源,就像 JDBC 所做的那样。这 Spring 模板类共有的设计原则是提供辅助方法 执行常见操作,并且对于更复杂的用法,委托 处理用户实现的回调接口的任务。JMS 模板遵循 相同的设计。这些课程提供了各种发送消息的便捷方法, 同步使用消息,并将 JMS 会话和消息创建者公开给 用户。org.springframework.jms.coreJdbcTemplate

该软件包提供翻译 功能性。转换将选中的层次结构转换为 未经检查的异常的镜像层次结构。如果任何特定于提供程序的子类 的选中存在,此异常包装在 猖獗。org.springframework.jms.supportJMSExceptionJMSExceptionjakarta.jms.JMSExceptionUncategorizedJmsException

该软件包提供了一个抽象,用于在 Java 对象和 JMS 消息之间进行转换。org.springframework.jms.support.converterMessageConverter

该软件包提供了各种策略 用于管理 JMS 目标,例如为目标提供服务定位器 存储在 JNDI 中。org.springframework.jms.support.destination

该软件包提供了必要的基础设施 要使用 .org.springframework.jms.annotation@JmsListener

该软件包提供了命名空间的解析器实现,以及用于配置侦听器容器和 创建侦听器终结点。org.springframework.jms.configjms

最后,该软件包提供了 适用于独立应用。它还包含一个 Spring for JMS的实现(狡猾地命名为)。这允许将 JMS 无缝集成为事务 资源添加到Spring的事务管理机制中。org.springframework.jms.connectionConnectionFactoryPlatformTransactionManagerJmsTransactionManager

从 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 放在 classpath,但仅对驱动程序使用 JMS 1.1 兼容的 API。Spring 的 JMS 支持 缺省情况下遵循 JMS 1.1 约定,因此在相应的配置中,它确实如此 支持这样的场景。但是,请仅将此作为过渡方案的考虑。