骆驼(Camel) - '子路由'中的异常处理

21

Camel明确处理了两种错误处理的范围:

  • 全局
  • 每个路由

我遇到的问题是在“子路由”中抛出异常。例如,我有这个路由:

from("direct:sendToWebservice").
    .processRef("massageBeforeSending").
    .to("http://webservice.com").
    .processRef("massageResponse");

那么我还有另外两个需要向web服务发送消息的路由:

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

from(direct:fromSystemB").
    .errorHandler(deadLetterChannel("direct:TellSystemB")).
    .to("direct:sendToWebservice");

我希望发生的情况是,如果Web服务路由引发异常,它将向调用方传播,并通知A系统或B系统。我不知道如何实现这一点。

我觉得这应该是一个常见的用例-有没有人遇到过类似的问题?

再次感谢您的时间,

Roy

1个回答

32

从同事那里得到了答案:子路由需要禁用其错误处理:

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接