Hello camel users, I'd like to ask you for your opinion on following DeadLetter channel example. Is it bug, feature or I'm missing something?
I create route with DeadLetter error handler. On error message goes to route "dead-letter-route". - use case: format some meaningfull description of problem and send e-mail to admin or whatever - there is LoggingErrorHandler for dead-letter-route route -if sending mail / templating / whatever fails, I need to know what happend, maby try redelivery. In following example: - new e-mail in source-route - http post fails - message is moved to dead-letter-route - http post in dead-letter-route fails - I expect error to be logged and it should be end of story BUT - error is propagated back to source-route and to imap endpoint, which results to e-mail being marked as unread => inifnite loop. Shouldn't dead letter channel in original route prevent such situations? Tried with camel 2.12.0 and 2.13.0. Thanks for opinion. Josef --- spring xml --- dependencies: camel-mail, camel-http4 ------------------------------------------ <camel:camelContext xmlns="http://camel.apache.org/schema/spring"> <camel:errorHandler id="source-route-eh" type="DeadLetterChannel" deadLetterUri="direct:dead"> <camel:redeliveryPolicy maximumRedeliveries="2" logStackTrace="false" logRetryAttempted="true" logExhausted="true" retryAttemptedLogLevel="WARN" retriesExhaustedLogLevel="ERROR"/> </camel:errorHandler> <camel:errorHandler id="logging-dead-route" type="LoggingErrorHandler"> <camel:redeliveryPolicy maximumRedeliveries="1" logRetryAttempted="true" logExhausted="true" retryAttemptedLogLevel="WARN" retriesExhaustedLogLevel="ERROR" logStackTrace="false"/> </camel:errorHandler> <camel:route id="source-route" errorHandlerRef="source-route-eh"> <camel:from uri="imaps:[email protected]?password=USER_PASSWORD&consumer.delay= 1000"/> <!--<camel:from uri="quartz2:tests/test?trigger.repeatCount=0"/>--> <camel:to uri="http4://localhost:666/nonexistinguri"/> </camel:route> <camel:route id="dead-letter-route" errorHandlerRef="logging-dead-route"> <camel:from uri="direct:dead"/> <camel:log message="message in dead letter queue"/> <camel:to uri="http4://localhost:667/deadnonexistinguri"/> </camel:route> </camel:camelContext> ---------------------------------
