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 的事务管理机制中。