|
对于最新稳定版本,请使用 Spring Framework 7.0.6! |
JMS(Java 消息服务)
Spring 提供了一套JMS集成框架,简化了JMS API的使用方式,与Spring对JDBC API的集成方式类似。
JMS 的功能大致可分为两个方面,即消息的生产和消费。JmsTemplate 类用于消息的生产以及同步消息接收。对于类似于 Jakarta EE 中消息驱动 Bean(Message-Driven Bean)风格的异步接收,Spring 提供了多种消息监听器容器,可用于创建消息驱动 POJO(MDP)。Spring 还提供了一种声明式的方式来创建消息监听器。
org.springframework.jms.core 包提供了使用 JMS 的核心功能。它包含 JMS 模板类,通过处理资源的创建和释放来简化 JMS 的使用,其作用类似于 JdbcTemplate 对 JDBC 所做的那样。Spring 模板类所共有的设计原则是:提供辅助方法以执行常见操作;对于更复杂的用法,则将处理任务的核心逻辑委托给用户实现的回调接口。JMS 模板遵循相同的设计理念。这些类提供了多种便捷方法,用于发送消息、同步接收消息,以及向用户暴露 JMS 会话(session)和消息生产者(message producer)。
org.springframework.jms.support 包提供了 JMSException 异常转换功能。该转换将受检的 JMSException 异常层次结构转换为对应的非受检异常层次结构。如果存在任何特定于 JMS 提供商的受检 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 的 JMS PlatformTransactionManager 实现(巧妙地命名为 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 包放入 classpath 中,但仅使用与 JMS 1.1 兼容的 API 来调用你的驱动程序。Spring 的 JMS 支持默认遵循 JMS 1.1 的规范,因此通过相应的配置,它确实支持这种场景。不过,请仅将此方案视为过渡时期的临时措施。 |