入力ボディを生成するための最初のルート。キャメル使用オリジナルメッセージが機能しない
from("timer://bar?fixedRate=true&period=10000s")
.process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
exchange.getIn().setBody("some message");
}
}).to("direct:dummydata");
第2の経路の例外をスローし、onException
でそれをキャッチします。
onException(RuntimeException.class)
.useOriginalMessage()
.handled(true)
.log("after catching: ${body}");
from("direct:dummydata")
.log("before exception: ${body}.")
.process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
throw new RuntimeException("some exception");
}
});
予想:いくつかのメッセージ:例外の前に 。キャッチ後の :メッセージ。
現実:
2016-04-18 18:08:02.342 INFO 5659 --- [0 - timer://bar] route2 :
before exception: some message.
2016-04-18 18:08:02.345 INFO 5659 --- [0 - timer://bar] route2 :
after catching:
2016-04-18 18:08:02.349 ERROR 5659 --- [0 - timer://bar]
o.a.camel.processor.DefaultErrorHandler : Failed delivery for
(MessageId: ID-sdcit001mac-49629-1460974079807-0-1 on ExchangeId:
ID-sdcit001mac-49629-1460974079807-0-2). Exhausted after delivery attempt:
1 caught: java.lang.RuntimeException: some exception. Processed by failure processor:
FatalFallbackErrorHandler[Channel[Log(route2)[after catching: ${body}]]]
useOriginalMessage()
がここで働いていないのはなぜ?