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.