我只是想在异常发生后继续处理消息。我知道,可以使用'<'continue'>'..'<'/ continue>'来自xml的声明,但我想隐藏xml文档中的复杂性。并且不想改变我们目前构建的每个模块。因此,我想通过java在中心位置设置它。
案例: 如果发生异常,将从onException块调用java bean,该块分析异常并检查异常的类型。现在我想配置,如果它是一个ExampleException,应该忽略该异常并继续路由。只是处理类似,可以通过ExchangeHelper设置,但不同的是,处理的只是一个简单的标题而不是。
有没有办法在实际的交换对象上设置java继续?
提前致谢!
的Stefan
答案 0 :(得分: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