gpt4 book ai didi

java - 如何在 Camel 中延迟重试

转载 作者:行者123 更新时间:2023-11-29 04:52:32 29 4
gpt4 key购买 nike

我有兴趣在 Camel 中使用 RedeliveryPolicy 在返回特定异常时重试将消息重新传递到端点。但是我似乎找不到很多关于如何配置它的例子。

目前我正在尝试:

    from("direct:entry")
.onException(ResourceNotFoundException.class)
.redeliveryPolicy(new RedeliveryPolicy().delayPattern("delayPattern=0:" + aocmDelay + ",10:1000;15:2000:19:10000"))
.handled(true)
.end()
.to("direct:destination");

我的目标端点因 ResourceNotFoundException 而失败,但未调用 onException 处理并且重新传送未生效。对我做错了什么有什么想法吗?

最佳答案

您需要设置重新传送策略的单个属性。

from("direct:entry")
.onException(ResourceNotFoundException.class)
.maximumRedeliveries(20)
.delayPattern("1:2000;10:1000;15:2000;19:10000")
.handled(true)
.end()
.to("direct:destination");

补充说明:

  • 您需要定义最大重新投递尝试次数(如果未在其他地方定义),否则将使用默认值零
  • 在延迟模式中你有两个错别字
    delayPattern=0:"+ aocmDelay + ",10:1000;15:2000:19:10000
    __________________________________;______________;________
  • 重新传递计数从 1 开始,如果您定义 0:1000;1:5000,则第一次重新传递会延迟五秒而不是一秒

关于java - 如何在 Camel 中延迟重试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34869888/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com