在ActiveMQ群集中,如何查找选择特定消息或消息集的消费者?

时间:2015-06-09 14:09:49

标签: activemq cluster-computing

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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