开发者

Camel - Exception handling in 'sub routes'

开发者 https://www.devze.com 2023-04-04 10:28 出处:网络
Camel explicitly handles two \'scopes\' of error handling: Global per Route The issue I\'m having is exceptions thrown in a \'sub route\'.For instance, I\'ve got this route:

Camel explicitly handles two 'scopes' of error handling:

  • Global
  • per Route

The issue I'm having is exceptions thrown in a 'sub route'. For instance, I've got this route:

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

Then I've got two other routes that need to send messages to the webservice:

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

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

What I would like to happen is, if the webservice route throws an exception, it's propagated up to the caller, and either system A or system B would be notified. I don't see a way to achieve this.

开发者_运维技巧

I feel like this would be a common use case - has anyone bumped up against it before?

Thanks again for your time,

Roy


Got the answer from a colleague: The subroute needs to have it's error handling disabled:

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

This forces Camel to propagate the error to the calling route.

0

精彩评论

暂无评论...
验证码 换一张
取 消