2

我正在使用 ActiveMQ 实现客户端/工作人员系统,并且我想实现手动消息确认和消息拒绝。

为什么拒绝消息?如果一个工作人员有太多任务要处理,我希望该工作人员告诉代理重新排队原始消息。

我知道有一些方法可以自动确认或实施交易,但我宁愿有这样的东西:

  1. 消息需要在 5 秒内得到确认
  2. 如果他们没有被确认,代理将把消息发送给不同的工作人员
  3. Works可以随时手动拒绝消息

我该如何实现这一点(而不仅仅是手动将消息重新发送到代理)

更新:

稍微改述一下这个问题: 我如何确保将未确认的消息重新添加回队列(并且重新传递可以返回到以前甚至没有确认的同一个消费者 - 假设消费者离线然后又回来了)

4

1 回答 1

3

关于队列的 ActiveMQ 网页:

如果消费者收到一条消息并且在关闭之前没有确认它,那么该消息将被重新传递给另一个消费者。

这就是你想要的,对吧?因此,您必须关闭 AUTO_ACKNOWLEDGEMENT 模式并使用另一种模式:CLIENT_ACKNOWLEDGE 或者可能更具选择性的 INDIVIDUAL_ACKNOWLEDGE。

拒绝消息是不可能的(还),请参阅ActiveMQ-Docu

没有 JMS 'unacknowledge'。

于 2013-10-09T07:10:37.303 回答