Apache Camel-如何通过多播捕获异常?

时间:2018-07-03 14:05:12

标签: java apache-camel

我的应用程序中有一条主要路线,称为MAIN_ROUTE。 我已经在子路由(称为SOME_ROUTE)中实现了多播模式,以便分别依次调用其他一些端点。

这是主要路线的代码:

onException(Exception.class)
    //Do some stuff here
    .end();

from(MAIN_ROUTE)
    //do some stuff, no specific config
    .to(SUB_ROUTE)
    .end();

这是被叫的路线代码:

from(SUB_ROUTE)
        .routeId(SUB_ROUTE)
        .streamCaching()
        .log(LoggingLevel.INFO, log, "ExchangeId : $simple{id} - Start route")
        .errorHandler(noErrorHandler())
            //We use a multicast because we need to call initialization route and we don't care about the exchange body of that route
        .multicast()
            .stopOnException()
            .to(SOME_ENDPOINT_1, SOME_ENDPOINT_2)
        .end()
    .end();

我想捕获并管理在该顶级路由上多播引发的任何异常。

有人知道怎么做吗?

谢谢

1 个答案:

答案 0 :(得分:0)

您在多播模式上具有“ shareUnitOfWork”属性(其默认值为false)。 基本上:如果启用,它将使您的主要Camel Exchange共享与创建的子交易所相同的工作环境;特别是多播内部发生的任何异常都将传播到父交换机。