【问题标题】:Consume ActiveMQ advisory messages in tomEE mdb在 tomEE mdb 中使用 ActiveMQ 咨询消息
【发布时间】:2013-04-18 13:38:19
【问题描述】:

我有一个 MDB,当部署在 glassfish 上时,它管理使用 ActiveMQ 咨询消息。

但是当我在 tomEE 上部署时,这个 MDB 不会使用任何咨询消息。有什么我需要打开的吗?

@MessageDriven(mappedName = "ActiveMQ.Advisory.Consumer.Queue", activationConfig = {
        @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic"),
        @ActivationConfigProperty(propertyName = "destination", propertyValue = "ActiveMQ.Advisory.Consumer.Queue.User.*") })
public class AdvisoryMdb implements MessageListener {
    private final Logger logger = LoggerFactory.getLogger(getClass().getName());

    @Override
    public void onMessage(Message message) {
        logger.info("onMessage() {}", message);
    }
}

(在 TomEE 中,我设法成功地在这些队列上生成和使用消息,我想为其提供建议)

编辑:我测试了使用独立客户端使用这些咨询主题之一,并按预期获得了消息。所以建议消息发送成功,只是我的 mdb 没有正确接收它们。

【问题讨论】:

    标签: activemq message-driven-bean apache-tomee


    【解决方案1】:

    您尝试使用哪些咨询消息?

    查看文档here...我看到ActiveMQ.Advisory.Consumer.Queue 列出的含义是队列中的消费者启动和停止消息。您的目标是ActiveMQ.Advisory.Consumer.Queue.User.*,那么您是否有一个名为User 的队列?这是一个队列还是User下面有多个队列?

    同时阅读文档,咨询队列名称多年来似乎发生了一些变化。您能否检查跨平台的 ActiveMQ 版本并确保您将苹果与苹果进行比较?此外,在我列出的文档页面上,我有点想知道是否某些建议被禁用。它没有将该特定队列列为可以禁用的队列,但您可以尝试显式启用所有建议,看看是否有帮助。

    【讨论】:

    • 侦听 ActiveMQ.Advisory.Consumer.Queue.User.* 意味着它将在匹配模式“User.*”的队列中获取消费者事件
    【解决方案2】:

    碰巧我试图删除

    mappedName = "ActiveMQ.Advisory.Consumer.Queue"
    

    来自@MessageDriven 注释,突然它可以在 TomEE 和 glassfish 上运行。不知道为什么我首先添加了它,猜想 glassfish 也不需要它。

    【讨论】:

      猜你喜欢
      • 2017-06-13
      • 2019-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-19
      • 2017-02-13
      • 2018-05-27
      • 1970-01-01
      相关资源
      最近更新 更多