在ActiveMQ集群中,如何找到拾取特定消息或消息集的使用者?

在ActiveMQ集群中,如何找到拾取特定消息或消息集的使用者?,activemq,cluster-computing,Activemq,Cluster Computing,我们已经编写了一组队列和驼峰路由来使用来自队列的消息——队列位于ActiveMQ服务器中,驼峰路由位于ApacheKaraf中。我们建立了一个包含多个karaf节点的集群;问题是这些消息被不同节点中的驼峰路由读取;有没有办法知道消费者是谁选择了一条或一组信息?我在谷歌上搜索了一下,但没有找到任何头绪,所以我在这里请求您的帮助。除了咨询消息,ActiveMQ中没有对已消费消息的跟踪。解决方案是让每个骆驼消费者宣布它以某种方式处理了一条消息。有很多方法可以做到这一点,比如写入日志文件、将日志发送到数

我们已经编写了一组队列和驼峰路由来使用来自队列的消息——队列位于ActiveMQ服务器中,驼峰路由位于ApacheKaraf中。我们建立了一个包含多个karaf节点的集群;问题是这些消息被不同节点中的驼峰路由读取;有没有办法知道消费者是谁选择了一条或一组信息?我在谷歌上搜索了一下,但没有找到任何头绪,所以我在这里请求您的帮助。

除了咨询消息,ActiveMQ中没有对已消费消息的跟踪。解决方案是让每个骆驼消费者宣布它以某种方式处理了一条消息。有很多方法可以做到这一点,比如写入日志文件、将日志发送到数据库、发送电子邮件,或者根据频率和需要执行任何操作。当然,您可以编写一些插件或类似于ActiveMQ的插件,并让它记录这些信息以满足您的需要,但这似乎有些尴尬。

出于调试目的,您可以使用Hawtio来监视Camel节点并跟踪路由使用的消息。您还可以在那里动态地将日志添加到路由中。

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

  • ActiveMQ:此插件位于集群的每个节点中。它将在消息通过节点时将“brokerName”附加到消息中的JMS头中
  • 在骆驼上下文中启用:配置所有骆驼上下文以启用消息历史记录。它将包括一个带有org.apache.camel.MessageHistory和路由元数据列表的exchange属性
  • 启用或实施将所需信息写入日志文件
  • (可选)实施相关标识符,以更好地识别对话/事务中的消息流

  • 有趣的是,让我试试这个,让你知道。我可以使用TraceBrokerPathPlugin,这就足够了。