I have tested the case of using a route specific onException clause within a
transaction and it appears to work as I would expect (or hope). So I have a
route that is transactional and the final endpoint in the route throws an
exception I forced my restful service to just throw an exception). Without
the onException clause the message lands back in the queue as you would
expect due to it running within a transaction. With the onException clause,
I look for specific exceptions and if it is one of the exceptions that I
have specified I tell tell Camel that the exception has been "handled" (via
the handled clause) and I route the message to the dead letter queue, thus
moving the "bad message" out of the way of the messages remaining on the
queue. I think the key here is the use of the "handled" clause that tells
Camel that the message has been handled and therefore to NOT rollback the
transaction. The alternative choice is to tell Camel to "continue" on with
its normal processing which would have rolled back the transaction and put
the message back onto the queue (via the "continue" clause...at least I
think it is a clause).

Hope that helps.

--
View this message in context: 
http://camel.465427.n5.nabble.com/Transacted-vs-DeadLetterQueue-tp5713992p5714139.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to