Thank you for your answer. I do not have any unit tests right now but I'll try to do some.
Another thing that is strange in the implementation of the timeout. The timeout is set in the resetTask() method which is called at the completion of the exchange (SessionBatchTransactionSynchronization.java). If I'm understanding it well, the timeout seems to be reset at each exchange completion. That is not really the definition of a timeout. So, if the first exchange of the batch enters in an infinite loop, the completion will never be executed and the timeout will not be triggered. Plus, the timeout task is not canceled in case of failure (onFailure method). Please correct me if I am wrong, Florent -- View this message in context: http://camel.465427.n5.nabble.com/SJMS-implementation-Batch-Consumer-tp5741291p5741323.html Sent from the Camel Development mailing list archive at Nabble.com.