Apache camel 在达到Camel中最大重新交付的阈值后执行任务
我已经在代码中使用camel retry实现了重试功能。它将重试最多五次Apache camel 在达到Camel中最大重新交付的阈值后执行任务,apache-camel,spring-camel,Apache Camel,Spring Camel,我已经在代码中使用camel retry实现了重试功能。它将重试最多五次 onException(Exception.class) .maximumRedeliveries(5) .retryAttemptedLogLevel(LoggingLevel.WARN) .backOffMultiplier(5) .maximumRedeliveryDelay(5) .useExponentialBackOff(); 现在,如果达到阈值,我想调用一个自定义方法
onException(Exception.class)
.maximumRedeliveries(5)
.retryAttemptedLogLevel(LoggingLevel.WARN)
.backOffMultiplier(5)
.maximumRedeliveryDelay(5)
.useExponentialBackOff();
现在,如果达到阈值,我想调用一个自定义方法,而不是抛出异常。如何实现这一点?您可以将
handled标志设置为true,然后调用自定义bean
onException(Exception.class)
.maximumRedeliveries(5)
.retryAttemptedLogLevel(LoggingLevel.WARN)
.backOffMultiplier(5)
.maximumRedeliveryDelay(5)
.useExponentialBackOff()
.handled(true)
.to("bean:myCustomBean");
这正是的用例。我建议将您的onException
块转换为errorHandler
,并使用deadLetterChannel
builder
errorHandler(
deadLetterChannel("direct:redeliveryExhausted")
.maximumRedeliveries(5)
.retryAttemptedLogLevel(LoggingLevel.WARN)
.backOffMultiplier(5)
.maximumRedeliveryDelay(5)
.useExponentialBackOff()
);
from("direct:redeliveryExhausted")
.log("I am going to handle non-deliverable message")
.log("Because of this exception: ${exception}")
.to("log:failed");