以下是Camel In Action手册中的示例路线。上下文范围内有一个错误处理程序和两个路由定义。我的问题
orderService.validate()
和orderService.enrich()
,如果我需要针对validate()
和enrich()
方法产生的异常的不同错误处理程序,该怎么办?
//上下文范围错误处理程序
errorHandler(defaultErrorHandler()
.maximumRedeliveries(2)
.redeliveryDelay(1000)
.retryAttemptedLogLevel(LoggingLevel.WARN));
//Route 1
from("file://target/orders?delay=10000")
.beanRef("orderService", "toCsv")
.to("mock:file")
.to("seda:queue.inbox");
//Route 2 with route scope error handler
from("seda:queue.inbox")
.errorHandler(deadLetterChannel("log:DLC")
.maximumRedeliveries(5).retryAttemptedLogLevel(LoggingLevel.INFO)
.redeliveryDelay(250).backOffMultiplier(2))
.beanRef("orderService", "validate")
.beanRef("orderService", "enrich")
.to("mock:queue.order");
答案 0 :(得分:1)
你对#1&的假设#2是正确的......
对于#3,要么定义Exception Clauses来捕获bean方法抛出的显式异常(OrderValidateException,EnrichException等),要么在路由的每一步周围使用内联try-catch块(我更喜欢首先接近我自己)