【问题标题】:How can I make ActiveMQ/Camel remove the current message from the queue AFTER completion?如何让 ActiveMQ/Camel 在完成后从队列中删除当前消息?
【发布时间】:2016-01-28 10:52:06
【问题描述】:

我有一个 Camel 路由,它从一个 activeMQ 队列中消耗。现在,当消息由 Camel 路由处理时,它会从队列中删除。

我想要的是它保留在队列中,直到我的路线完成并将消息转发到另一个队列,以防止消息在我的骆驼崩溃时消失。

此时,如果 Camel 在处理消息时崩溃,来自队列的消息将永远丢失。

我怎样才能做到这一点?

【问题讨论】:

标签: java jms apache-camel activemq


【解决方案1】:

添加acknowledgementModeName=CLIENT_ACKNOWLEDGE使Camel仅在路由成功完成时删除消息:

from("activemq:some.queue.name?acknowledgementModeName=CLIENT_ACKNOWLEDGE")

Camel 也会锁定这些消息,以防止其他 Camel 实例或线程处理相同的消息。

【讨论】:

  • Camel 已经对消息本身进行了锁定,我用 2 个 Camel 实例对此进行了测试,它们不会“窃取”彼此的消息。
  • 仅供参考:您可以编辑您的答案,而不是只评论您自己的帖子。
猜你喜欢
  • 2018-09-28
  • 1970-01-01
  • 1970-01-01
  • 2017-06-09
  • 2017-12-22
  • 1970-01-01
  • 2015-12-20
  • 2014-09-17
  • 1970-01-01
相关资源
最近更新 更多