如何根据交换的某些属性动态地设置重试次数?
我想发送一个事件到目的地,然后处理响应,如果这个事件是positive == true
,那么我想同步重试3次;如果没有,就不要重试。
from(RETRY_ONLINE_ENDPOINT)
.routeId(RETRY_ONLINE_ROUTE_ID)
.choice()
.when(simple("${exchangeProperty.positive} != true"))
.onException(HttpOperationFailedException.class)
.log(LoggingLevel.INFO, "Caught: " + simple("${exchangeProperty.CamelExceptionCaught}") + ", retried attempts: " + simple("${header.CamelRedeliveryCounter}"))
.maximumRedeliveries(3)
.handled(true)
.bean(PostRetryBean.class)
.endChoice()
.otherwise()
.bean(PostRetryBean.class)
.endChoice()
.end();
但我得到异常onException()
必须设置为顶级错误。
如果我将onException()
移到顶层,则编译无法通过。MaximizeRetryTimes不能跟在when()
后面。
那么,如何有条件地设置最大重试次数呢?
1条答案
按热度按时间s4chpxco1#
现在我发现:使用
onWhen()
额外检查条件以决定是否使用此onException()
路由。所以它变成了: