Die erste Route zum Erstellen des Eingabekörpers.Camel useOriginal Message funktioniert nicht
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");
Der zweite Weg, die Ausnahme und fängt es von onException
zu werfen.
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");
}
});
Erwartet: vor Ausnahme: einige Nachricht. nach dem Abfangen: eine Nachricht.
Reality:
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}]]]
Warum die useOriginalMessage()
hier nicht funktioniert?