I have routes that read from JMS queue and write to another queue and
do some processing in between. Queues are in external ActiveMQ server.

I am confused about how error handling and configuring for example
retries is configured.

- my route is marked <transacted/> and because of that, it uses
TransactionErrorHandler
- http://camel.apache.org/transactional-client.html states that
"Configuration of Redelivery: The redelivery in transacted mode is not
handled by Camel but by the backing system (the transaction manager).
In such cases you should resort to the backing system how to configure
the redelivery.". This I understand means that I configure "when
exceptions happen, delivery is tried 10 times before moving message to
dead letter queue" stuff to ActiveMQ, not Camel.
- http://camel.apache.org/transactionerrorhandler.html states that "As
the TransactionErrorHandler also supports to let Camel do redeliveries
you can use both worlds. Letting Camel do some redeliveries and at the
end the backing transaction manager doing other redeliveries. In fact
in the end the transaction manager have the final word. That means if
Camel cannot process the exchange then its thrown back to the
transaction manager that will perform the rollback, and redelivery.".
This I understand means means TransactionErrorHandler does it's own
redeliveries before ActiveMQ tries delivery?

What if I configure 10 retries to both ActiveMQ and
TransactionalErrorHandler, is message processing retries 10*10 = 100
times if it throws an exception? Is that how it works?

Reply via email to