Java SpringJMS消息侦听器容器

Java SpringJMS消息侦听器容器,java,spring,tomcat,jms,activemq,Java,Spring,Tomcat,Jms,Activemq,我是JMS新手,正在使用Tomcat6和Spring设置ActiveMQ。我已经配置了大多数基本内容,但是我对Spring提供的消息侦听器容器有点困惑。阅读文档时,听起来消息侦听器容器用于“处理”订阅(我正在处理主题)、取消订阅并将消息传递给侦听器。我不确定我的想法是否正确。如果是这种情况,我看不到任何关于如何让多个类使用消息侦听器容器订阅同一主题的文档。我看到您可以设置messageListener属性,但这只允许一个类订阅主题。仅仅为了让另一个订阅者(消息驱动的POJO)侦听同一主题而创建同

我是JMS新手,正在使用Tomcat6和Spring设置ActiveMQ。我已经配置了大多数基本内容,但是我对Spring提供的消息侦听器容器有点困惑。阅读文档时,听起来消息侦听器容器用于“处理”订阅(我正在处理主题)、取消订阅并将消息传递给侦听器。我不确定我的想法是否正确。如果是这种情况,我看不到任何关于如何让多个类使用消息侦听器容器订阅同一主题的文档。我看到您可以设置messageListener属性,但这只允许一个类订阅主题。仅仅为了让另一个订阅者(消息驱动的POJO)侦听同一主题而创建同一消息侦听器容器的另一个实例似乎是不对的

有人能帮我解释一下吗?我想我可能有点困惑


提前谢谢

容器是一种包装器,用于“适应”任何POJO以接收来自队列或主题的消息。如果您需要多个侦听器,那么最终将得到多个容器。

如果您熟悉消息驱动EJB,那么Spring MessageListenerContainer将有效地替代MDB。它之所以得名,是因为它与JMS主题/队列以及单个JMS MessageListener连接在一起,它从该主题/队列中提取消息并将它们提供给MessageListener

您非常正确,每次只能对每个容器注册一个MeasGelististAdvor,但是考虑到MasaGelistEnter容器代码可能相当复杂,实际上它是一个非常轻量级的运行时组件。不要害怕创建多个实例


此外,请确保根据您的情况选择适当的MessageListener实现。简单的和默认的实现是完全不同的,但两者都不是“更好的”。

大家都认为多个容器可以帮助您,但这看起来是错误的方法。因为JMS的目标是集成不同的应用程序/服务,而不是内部应用程序流程(您所说的几个类)。我建议在消息侦听器接收到消息后,自己将消息推送到不同的类。否则,您可以看看ApacheCamel或Spring集成之类的框架