javax.jms.MessageListener:需要注意哪些额外的线程问题?

javax.jms.MessageListener:需要注意哪些额外的线程问题?,java,spring,jms,Java,Spring,Jms,在一篇关于JMS的文章中,Bruce Snyder(ActiveMQ的作者)提到: 实现与Spring DMLC一起使用的消息侦听器的选项之一是使用javax.jms.MessageListener-它是jms规范中的标准化接口,但处理线程则取决于您自己 他没有在另外两个选项中讨论线程:Spring SessionWareMessageListener和MessageListenerAdapter 我的问题是:与其他两种方法相比,使用普通的javax.jms.MessageListener需要解

在一篇关于JMS的文章中,Bruce Snyder(ActiveMQ的作者)提到:

实现与Spring DMLC一起使用的消息侦听器的选项之一是使用javax.jms.MessageListener-它是jms规范中的标准化接口,但处理线程则取决于您自己

他没有在另外两个选项中讨论线程:Spring SessionWareMessageListener和MessageListenerAdapter

我的问题是:与其他两种方法相比,使用普通的javax.jms.MessageListener需要解决哪些额外的线程问题

我认为,无论我从上述3个选项中选择什么,如果我的侦听器将在多个线程上接收消息,那么我的侦听器实现必须是线程安全的

我浏览了Bruce在中为所有三个选项创建的示例。 在任何情况下,我都没有看到线程的任何特定处理。
和使用者的XML几乎相同。

只要在
MessageListener
实现中不保留任何状态(比如通过实例变量),就不必担心三种方法中的任何一种的线程安全性。如果您保持状态,那么就像在任何多线程场景中一样,您必须注意如何同步对状态的访问。

我也这么认为,正如我在问题中提到的那样。只是想确保我没有忽视任何东西,因为我对这一点还不熟悉。