0

我只是在尝试在发生异常后继续处理消息。我知道,可以使用 xml 中的 '<'continued'>'..'<'/continued>' 语句,但我想隐藏 xml 文档中的复杂性。并且不想更改我们迄今为止构建的每个模块。因此我想通过java在一个中心位置设置它。

案例:如果发生异常,将从onException块中调用一个java bean,分析异常并检查异常的类型。现在我要配置,如果它是一个 ExampleException,则应该忽略该异常并继续路由。与handled 类似,可以通过ExchangeHelper 设置,但不同的是,handled 只是一个简单的header,不会继续。

有没有办法在实际的交换对象上继续使用 java 设置?

提前致谢!

斯特凡

4

1 回答 1

0

我找到了以下内容并将尝试一下。

异常捕获 = exchange.getException();

    // we continue so clear any exceptions
    exchange.setException(null);
    // clear rollback flags
    exchange.setProperty(Exchange.ROLLBACK_ONLY, null);
    // reset cached streams so they can be read again
    MessageHelper.resetStreamCache(exchange.getIn());

    // its continued then remove traces of redelivery attempted and caught exception
    exchange.getIn().removeHeader(Exchange.REDELIVERED);
    exchange.getIn().removeHeader(Exchange.REDELIVERY_COUNTER);
    exchange.getIn().removeHeader(Exchange.REDELIVERY_MAX_COUNTER);
    exchange.removeProperty(Exchange.FAILURE_HANDLED);
    // keep the Exchange.EXCEPTION_CAUGHT as property so end user knows the caused exception
于 2013-08-22T10:16:00.903 回答