Spring 中消息驱动 POJO 的实现与配置
1. 异步消息接收概述
异步接收消息意味着有一个非阻塞的进程在特定队列或主题上监听消息。这是一种事件驱动的处理方式,消息的出现会触发消息监听器上的操作。Spring 框架通过消息驱动 POJO(MDP)支持异步接收器,主要有三种配置异步消息监听器的方式:
- 实现 javax.jms.MessageListener
接口;
- 实现 Spring 的 SessionAwareMessageListener
接口;
- 将标准 POJO 包装在 Spring 的 MessageListenerAdapter
类中。
这三种方法在消息监听器类的结构上有所不同,但都使用消息监听器容器,它类似于前面提到的 JmsTemplate
类。
2. Spring 消息监听器容器
消息驱动 POJO 在消息监听器容器的上下文中创建。消息监听器容器绑定连接工厂、JMS 目的地、JNDI 目的地解析器(如果使用 JNDI)和消息监听器 bean。Spring 提供了两种消息监听器容器:
- DefaultMessageListenerContainer
:能够在运行时动态调整监听器线程的数量,支持与 XA 事务集成。
- SimpleMessageListenerContainer
:适用于使用本地事务管理器,且不需要根据不同负载条件进行线程、会话或连接调整的简单消息应用程序。