104.28. 使用 consumer.bridgeErrorHandler
从 Camel 2.10 开始提供
如果要使用 Camel Error Handler 处理文件消费者中的异常,您可以启用 consumer.bridgeErrorHandler
选项,如下所示:
// to handle any IOException being thrown onException(IOException.class) .handled(true) .log("IOException occurred due: ${exception.message}") .transform().simple("Error ${exception.message}") .to("mock:error"); // this is the file route that pickup files, notice how we bridge the consumer to use the Camel routing error handler // the exclusiveReadLockStrategy is only configured because this is from an unit test, so we use that to simulate exceptions from("file:target/nospace?consumer.bridgeErrorHandler=true") .convertBodyTo(String.class) .to("mock:result");
// to handle any IOException being thrown
onException(IOException.class)
.handled(true)
.log("IOException occurred due: ${exception.message}")
.transform().simple("Error ${exception.message}")
.to("mock:error");
// this is the file route that pickup files, notice how we bridge the consumer to use the Camel routing error handler
// the exclusiveReadLockStrategy is only configured because this is from an unit test, so we use that to simulate exceptions
from("file:target/nospace?consumer.bridgeErrorHandler=true")
.convertBodyTo(String.class)
.to("mock:result");
因此,您只需要启用这个选项,路由中的错误处理程序将从那里获取它。
重要
在使用 consumer.bridgeErrorHandler 时,使用 consumer.bridgeErrorHandler 非常重要,然后应用拦截器,OnCompletions 不适用。Exchange 由 Camel Error Handler 直接处理,不允许之前操作,如拦截器、完成操作。