Camel显式处理错误处理的两个“范围”:
我遇到的问题是在“子路线”中抛出的异常。例如,我有这条路线:
from("direct:sendToWebservice").
.processRef("massageBeforeSending").
.to("http://webservice.com").
.processRef("massageResponse");
然后我还有两条需要向网络服务发送消息的路由:
from(direct:fromSystemA").
.errorHandler(deadLetterChannel("direct:TellSystemA")).
.to("direct:sendToWebservice");
from(direct:fromSystemB").
.errorHandler(deadLetterChannel("direct:TellSystemB")).
.to("direct:sendToWebservice");
我想要发生的是,如果Web服务路由抛出异常,它会传播到调用者,系统A或系统B将被通知。我没有办法实现这一目标。
我觉得这是一个常见的用例 - 有人曾经碰过它吗?
再次感谢您的时间,
罗伊
答案 0 :(得分:23)
得到了同事的回答:子路由需要禁用错误处理:
from("direct:sendToWebservice").
.errorHandler(noErrorHandler()) // disables error handling for this route
.processRef("massageBeforeSending").
.to("http://webservice.com").
.processRef("massageResponse");
这会强制Camel将错误传播到调用路由。