7

我是 JMS 新手,我正在使用 Tomcat 6 和 Spring 设置 ActiveMQ。我已经配置了大部分基本的东西,但是我对 Spring 提供的 Message Listener Containers 有点困惑。阅读文档,听起来消息侦听器容器用于“处理”订阅(我正在使用主题)、取消订阅并将消息传递给侦听器。我不确定我是否正确地考虑了这一点。如果是这种情况,我看不到任何关于如何让多个类使用消息侦听器容器订阅同一主题的文档。我看到您可以设置 messageListener 属性,但这只会允许一个类能够订阅一个主题。它没有

任何人都可以为我阐明这一点吗?我想我可能有点困惑。

提前致谢!

4

3 回答 3

4

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

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

此外,请确保为您的情况选择适当的 MessageListener 实现。Simple 和 Default 实现确实有很大不同,但都不是“更好”。

于 2009-06-07T08:00:41.843 回答
2

伙计们是正确的,多个容器会帮助你,但它看起来像错误的方法。由于 JMS 的目标是集成不同的应用程序/服务而不是内部应用程序流程(您谈论的几个类)。我建议在消息侦听器收到消息后自己将消息推送到不同的类。否则,您可以查看 Apache Camel 或 Spring Integration 等框架。

于 2012-06-26T06:13:05.183 回答
0

容器是一种包装器,可以“适应”任何 POJO 以从队列或主题接收消息。如果你需要多个监听器,你最终会得到多个容器。

于 2009-06-04T20:43:05.000 回答