下面是《Camel In Action》书中的路线示例。上下文范围内有一个错误处理程序和两个路由定义。我的问题
- 上下文级别错误处理程序仅适用于路由 1 的说法是否正确?
- 死信错误处理程序是否会针对路由 2 中的任何步骤(即
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");
最佳答案
你对 #1 和 #2 的假设是正确的......
对于 #3,可以定义 Exception Clauses捕获 bean 方法抛出的显式异常(OrderValidateException、EnrichException 等)或使用内联 try-catch route 每个步骤周围的街区(我自己更喜欢第一种方法)
关于java - apache-camel 错误处理程序范围澄清,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9594737/