Hi,
I' m trying to audit failures to a table in database on every *retry*
caused by an exception.
I have an exception handler that is invoked on exception
(HttpOperationFailedException in my case). As expected, a retry is executed
every 5 seconds, the * Exception from Exchange in the processor*
CamelRestResponseProcessor (* route below*) is always *null *and the route
*to("mybatis:insertProduct?statementType=Insert") * is invoked only ofter
all the retries are done.
Is it possible to log each failure before camel does a retry? My idea was
to create custom object in the processor and feed it as input to mybatis.
errorHandler(defaultErrorHandler().onRedelivery(new
CamelRestResponseProcessor()).to("mybatis:insertProduct?statementType=Insert")
.useOriginalMessage().maximumRedeliveries(5).redeliveryDelay(5000));
from("timer:foo?period=1000").process(new
MessageProcessor()).to("http4://localhost:8080/cts-rest/cts/users")
.bean( CamelBeanBinding.class,"invokeMethod7");
*PROCESSOR*
public class CamelRestResponseProcessor implements Processor {
private static final Logger logger =
Logger.getLogger(CamelRestResponseProcessor.class);
/**
*/
public CamelRestResponseProcessor() {
@Override
public void process(Exchange exchange) throws Exception {
Message message = exchange.getIn();
logger.debug(" Headers" + message.getHeaders());
logger.debug(" Exception " +exchange.getException());* //ALWAYS null*
*I could achieve it with doTry.. doCatch with the route below, but
onException /onRedelivery doesn't seem to work inline with a route.*
from("timer:foo?period=1000").process(new MessageProcessor()).doTry().
to("http4://localhost:8080/cts-rest/cts/users").doCatch(HttpOperationFailedException.class)
.process(new
CamelRestResponseProcessor()).to("mybatis:insertProduct?statementType=Insert").doFinally().end();
I' m trying to audit failures to a table in database on every *retry*
caused by an exception.
I have an exception handler that is invoked on exception
(HttpOperationFailedException in my case). As expected, a retry is executed
every 5 seconds, the * Exception from Exchange in the processor*
CamelRestResponseProcessor (* route below*) is always *null *and the route
*to("mybatis:insertProduct?statementType=Insert") * is invoked only ofter
all the retries are done.
Is it possible to log each failure before camel does a retry? My idea was
to create custom object in the processor and feed it as input to mybatis.
errorHandler(defaultErrorHandler().onRedelivery(new
CamelRestResponseProcessor()).to("mybatis:insertProduct?statementType=Insert")
.useOriginalMessage().maximumRedeliveries(5).redeliveryDelay(5000));
from("timer:foo?period=1000").process(new
MessageProcessor()).to("http4://localhost:8080/cts-rest/cts/users")
.bean( CamelBeanBinding.class,"invokeMethod7");
*PROCESSOR*
public class CamelRestResponseProcessor implements Processor {
private static final Logger logger =
Logger.getLogger(CamelRestResponseProcessor.class);
/**
*/
public CamelRestResponseProcessor() {
@Override
public void process(Exchange exchange) throws Exception {
Message message = exchange.getIn();
logger.debug(" Headers" + message.getHeaders());
logger.debug(" Exception " +exchange.getException());* //ALWAYS null*
*I could achieve it with doTry.. doCatch with the route below, but
onException /onRedelivery doesn't seem to work inline with a route.*
from("timer:foo?period=1000").process(new MessageProcessor()).doTry().
to("http4://localhost:8080/cts-rest/cts/users").doCatch(HttpOperationFailedException.class)
.process(new
CamelRestResponseProcessor()).to("mybatis:insertProduct?statementType=Insert").doFinally().end();