在这篇关于 JMS 的好文章中,Bruce Snyder(“ActiveMQ in Action”的作者)提到:
[一个] 用于实现与 Spring DMLC 一起使用的消息侦听器的选项之一是使用 javax.jms.MessageListener - 它是 JMS 规范中的标准化接口,但处理线程取决于您。
他没有在其他两个选项中谈论线程:Spring SessionAwareMessageListener 和 MessageListenerAdapter。
我的问题是:与其他两种方法相比,使用普通 javax.jms.MessageListener 需要解决哪些额外的线程问题?
我在想,无论我从上述 3 中选择什么选项,如果我的侦听器将在多个线程上接收消息,我的侦听器实现必须是线程安全的。
我浏览了 Bruce 在github中为所有三个选项创建的示例。在任何情况下,我都没有看到对线程的任何特定处理。简单和会话感知消费者的 xml 几乎相同。