骆驼 - '子路线'中的异常处理

Roy*_*ove 13 apache-camel

Camel显式处理错误处理的两个"范围":

  • 全球
  • 每条路线

我遇到的问题是在"子路线"中抛出的异常.例如,我有这条路线:

from("direct:sendToWebservice").
    .processRef("massageBeforeSending").
    .to("http://webservice.com").
    .processRef("massageResponse");
Run Code Online (Sandbox Code Playgroud)

然后我有两个需要向web服务发送消息的其他路由:

from(direct:fromSystemA").
    .errorHandler(deadLetterChannel("direct:TellSystemA")).
    .to("direct:sendToWebservice");

from(direct:fromSystemB").
    .errorHandler(deadLetterChannel("direct:TellSystemB")).
    .to("direct:sendToWebservice");
Run Code Online (Sandbox Code Playgroud)

我想要发生的是,如果webservice路由抛出异常,它会传播到调用者,系统A或系统B将被通知.我没有看到实现这一目标的方法.

我觉得这将是一个常见的用例 - 有人曾经碰过它吗?

感谢你的宝贵时间,

罗伊

Roy*_*ove 24

得到了同事的答案:子路由需要禁用错误处理:

from("direct:sendToWebservice").
    .errorHandler(noErrorHandler())     // disables error handling for this route
    .processRef("massageBeforeSending").
    .to("http://webservice.com").
    .processRef("massageResponse");
Run Code Online (Sandbox Code Playgroud)

这会强制Camel将错误传播到调用路由.