公司最近使用activemq,使用过程中出现问题,所以来研究一个spring jms的 文档,翻译出来有助于之后再次阅读,英语基础让人蛋蛋的忧伤,有不对之处请指出。
24.4.2 异步接受 - 消息驱动 POJO
通过使用@JmsListener注解,spring支持注解监听器,并提供了以编程方式注册端点的开放基础结构。
这是设置异步接收器最方便的方法,更多细节请参照 Section 24.6.1, “Enable listener endpoint annotations”。
类似于EJB世界中的消息驱动的bean,消息驱动POJO(Message-Driven POJO (MDP))扮演着JMS消息接收器的角色。
但MDP 的一个限制(请参阅下面的 MessageListenerAdapter)是它必须实现 javax.jms.MessageListener 接口。
请确保你的 MDP 在多线程情况下的线程安全。
下面是一个简单的MDP的实现
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
public class ExampleListener implements MessageListener {
public void onMessage(Message message) {
if (message instanceof TextMessage) {
try {
System.out.println(((TextMessage) message).getText());
}
catch (JMSException ex) {
throw new RuntimeException(ex);
}
}
else {
throw new IllegalArgumentException("Message must be of type TextMessage");
}
}
}
当你实现你的 MessageListener 之后,是时候创建消息监听器容器了(message listener container)。