You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Yan <yz...@medplus.com> on 2011/08/10 21:09:37 UTC
start and commit transaction before ProducerTemplate send message
Hi there,
I am using Camel 2.1.0, processing message from one ActiveMQ JMS queue. For
every message I process (whether succeed or fail), I send a status message
to a 2nd ActiveMQ queue. If processing fails, exception is thrown, message
rolls back to the original queue and we retry. I am using "transacted=true"
on all JMS endpoints, so that when I restart my Camel application, the
retried message survive restart and continue processing.
The problem is that when I throw exception (transaction not committed), the
status message is not written to the 2nd queue. A message is being retried
over and over, but status messages accumulate, they do not show up in status
message queue until the final successful retry (when transaction commits).
What I want is that when message rolls back because we throw exception, the
status still commits to the 2nd ActiveMQ queue right away. This is when
REQUIRES_NEW transaction comes in. However, I cannot figure out how to do
that.
My processor logic using this to send status to ActiveMQ queue. This is in
my process() logic for the 1st queue.
ProducerTemplate producerTemplate =
MyCamelContext.createProducerTemplate();
producerTemplate.sendBodyAndHeader("StatusQueue", message, header,
value);
I wanted to start a transaction before this and commits transaction
afterwards, how do I do that?
I am seeing examples like the following, but it does not help me, because I
only want to start a new txn if an exception is going to be thrown, and
commits that transaction right before I throw exception.
from(...).transacted("PROPAGATION_REQUIRES_NEW").to(...)
--
View this message in context: http://camel.465427.n5.nabble.com/start-and-commit-transaction-before-ProducerTemplate-send-message-tp4686899p4686899.html
Sent from the Camel - Users mailing list archive at Nabble.com.