【问题标题】:How to get the message back to the queue if the http request failed?如果 http 请求失败,如何将消息返回到队列中?
【发布时间】:2019-06-21 10:53:11
【问题描述】:

我使用带有activemq和camel-http的apache camel,在消息发送到端点并且请求失败后,我仍然丢失了队列中的消息。 如果请求失败,则消息不丢失是必要的。我该怎么做?

<route>
<from uri="activemq://db_record_rows"/>
<to uri="http://localhost:3000" />
</route>

【问题讨论】:

标签: apache-camel activemq camel-http


【解决方案1】:

您可以将您的消费者标记为已交易,因此它将由您的上下文的交易管理器处理。

from("activemq://db_record_rows?transacted=true")
.to("http://localhost:3000")

【讨论】:

  • 感谢您的回答。我为我的队列启用了这个选项,我看到了这种行为 - 端点多次尝试发送请求(只发出一个请求而没有处理选项),但是消息仍然从队列中删除,我需要配置 http-端点?
  • 邮件没有被删除,它可能只是在 N 次失败的传递尝试后才被移动到 DLQ。重新传递逻辑在 brokerUrl 中配置为参数。使用例如这个无限重新交付jms.redeliveryPolicy.maximumRedeliveries=-1。更多细节在这里:blog.nanthrax.net/?p=820
猜你喜欢
  • 2019-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-16
  • 1970-01-01
  • 2011-07-20
  • 1970-01-01
相关资源
最近更新 更多