[英]Camel errorHandlerRef not handling exceptions
我有以下骆驼路线/ Spring XML配置:
<camelContext id="my-camel-context" errorHandlerRef="deadLetterErrorHandler" xmlns="http://camel.apache.org/schema/spring">
<route id="my-camel-route">
<from uri="file:///home/myuser/start?include=input_.*xml&sendEmptyMessageWhenIdle=true&delay=6000000"/>
<to uri="loggingBean?method=log" />
</route>
</camelContext>
<bean id="deadLetterErrorHandler" class="org.apache.camel.builder.DeadLetterChannelBuilder">
<property name="deadLetterUri" value="bean:errorHandler" />
</bean>
<bean id="loggingBean" class="com.me.myapp.LoggingBean" />
<bean id="errorHandler" class="com.my.myapp.ErrorHandler" />
和以下loggingBean
:
public class LoggingBean {
public void log(Exchange exchange) {
System.out.println("About to throw exception...");
boolean b = true;
if(b)
throw new IllegalArgumentException("Bad code!");
}
}
和以下errorHandler
:
public class ErrorHandler implements Processor {
public ErrorHandler() {
super();
}
@Override
public void process(Exchange exchange) {
Exception exception = exchange.getException();
System.out.println("Just received exception of type " + exception.getClass().getName() + ".");
}
}
当我运行此代码时,我从loggingBean
获得了“ 即将引发异常... ”日志消息,但没有从errorHandler
日志消息。 骆驼只是停止,但没有关闭。 有什么想法吗?
您的处理程序中的异常对象可能为null,从而导致NPE。 要获取捕获的异常,可以使用:
Exception exception = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Exception.class);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.