我正在使用Java DSL来配置路由。我有一条类似于下面给出的路线。
RouteBuilder builder = new RouteBuilder() {
public void configure() {
// onException(Exception.class).bean("bean");
onException(Exception.class).to("anotherProcessor");
from("queue:a").bean("someBean").to("processor");
}
};
在做一些活动后如何炸毁异常?例外,我尝试配置处理器和bean来重新抛出异常。无论哪种方式,骆驼都将异常设置为交换但不会炸毁异常。
我在junit测试案例中这样做。我正在使用onException处理器处理异常。在处理器内部,我正在做我的断言。断言错误由camel自动处理,测试未被标记为通过/失败。
答案 0 :(得分:0)
[value]="true"
<强>的try-catch 强>
from(CONSUMER)
.doTry()
.doCatch(SocketTimeoutException.class,Exception.class)
.beanRef("ErrorProcessor","processErrorMessage")
.to("freemarker:ErrorResponseTransformer.ftl")
.end()
.to(PRODUCER)
关于例外
处理异常并将其作为要显示的响应错误消息进行处理。您甚至可以使用onException(Exception.class)
.handled(true)
.process(new Processor() {
public void process(Exchange e) throws Exception {
helper.processErrorMessage(e);
log.info("Response error: "
+ MessageHelper.extractBodyAsString(e.getIn()));
log.info("Response error: "
+ MessageHelper.extractBodyAsString(e.getOut()));
}
});
或窃听来继续正常流动。
或使用camel的 errorHandler 。
希望这有帮助。