【问题标题】:In ActiveMQ clustering, how to find the consumer who picked a particular message or set of messages?在 ActiveMQ 集群中,如何找到选择特定消息或一组消息的消费者?
【发布时间】:2015-06-15 09:31:40
【问题描述】:

我们已经编写了一组队列,并且编写了骆驼路由来使用来自队列的消息 - 队列位于 ActiveMQ 服务器中,骆驼路由位于 Apache Karaf 中。我们建立了一个包含多个 karaf 节点的集群;问题是这些消息被不同节点中的骆驼路由读取;有没有办法知道选择特定消息或一组消息的消费者?我在 Google 上四处搜索,但没有得到任何帮助,所以我在这里寻求您的帮助。

【问题讨论】:

    标签: activemq cluster-computing


    【解决方案1】:

    出于调试目的,您可以使用 Hawtio 监控您的 Camel 节点并跟踪路由使用的消息。您还可以在其中动态添加日志记录到您的路线。

    【讨论】:

      【解决方案2】:

      您可以尝试使用以下组合:

      1. ActiveMQ TraceBrokerPathPluginConfigure 这个插件在集群的每个节点中。当消息通过节点时,它会将“brokerName”附加到消息中的 JMS 标头。
      2. 在 Camel 上下文中启用 Message History:配置所有骆驼上下文以启用消息历史记录。它将包含一个交换属性,其中包含 org.apache.camel.MessageHistory 列表以及路由元数据。
      3. 启用trace 或实现EventNotifier 将您需要的信息写入日志文件。
      4. (可选)实施相关标识符以更好地识别对话/交易中的消息流。

      【讨论】:

      • 有趣,让我试试这个,让你知道。
      • 我可以使用 TraceBrokerPathPlugin 就足够了。
      【解决方案3】:

      除了咨询消息外,ActiveMQ 中不跟踪使用的消息。解决方案是让每个 Camel 消费者宣布它以某种方式处理了一条消息。有很多方法可以做到这一点,例如写入日志文件、将日志发送到数据库、电子邮件或其他任何取决于频率和需要的方法。当然,您可以编写一些插件或类似于 ActiveMQ 的插件并让它记录您需要的此类信息,但这似乎很尴尬。

      【讨论】:

        猜你喜欢
        • 2018-03-12
        • 1970-01-01
        • 2014-01-22
        • 2015-11-25
        • 1970-01-01
        • 2016-06-08
        • 2021-03-06
        • 2012-12-26
        • 2019-10-04
        相关资源
        最近更新 更多