将消耗的消息从主题移动到队列

时间:2013-10-30 09:56:37

标签: jms activemq message-queue jms-topic

假设有几个订阅者正在使用某个主题。在向所有订阅者发送消息后,我想触发一个在输入中使用此消息的作业。

因此,简单的方法是将已成功传递给所有订阅者的消息移动到我的作业将使用消息的队列中。 它是JMS的一部分吗?

是否有任何消息经纪人可以直接这样做?

如果没有解决这个问题的简单解决方案?

2 个答案:

答案 0 :(得分:1)

你应该可以使用activemq的建议来做到这一点。

有关咨询消息的详情,请参阅此处:http://activemq.apache.org/advisory-message.html

因此,对于相关主题,您想要做的是跟踪:

  • 消费者数量
  • 向他们发送邮件时
  • 每个消费者确认消息时

获取消费者数量,收听“ActiveMQ.Advisory.Consumer.Topic”。咨询主题

要在分派消息时获取,请收听“ActiveMQ.Advisory.MessageDelivered.Topic。”

获取消息时,请收听“ActiveMQ.Advisory.MessageConsumed.Topic。”

您可以轻松地使用Apache Camel来帮助解决这个问题(听取主题)并汇总所有消费者是否已处理(确认)消息..然后这可能会启动您的进一步处理..

答案 1 :(得分:0)

您可以创建另一个持久订阅,以便将消息从主题直接路由到队列。从该队列中,您的作业可以使用消息。这比创建将消息路由到队列的触发器容易得多。

  

所以这样做的简单方法就是移动已有的消息   成功地将所有的成功者送到了我的队列中   工作会消耗消息。它是JMS的一部分吗?

不,这不是JMS规范的一部分。