Here is the use case. 

1) Consume message from ActiveMQ queue
2) Update database with data derived from step 1
3) Download rather large data from database
4) Process data from step 3
5) Update database with results from step 4

These routes represent that case (I think):

Steps 1, 2
<route id="consumeReadyQueue">
        <from uri="q:queue:queue/batch/ready" />
        <transacted/>
        <to uri="bean:batchListener?method=init" />
        <to uri="direct:processBatch" />
</route>

Steps 3, 4, 5
<route id="processBatch">
        <from uri="direct:processBatch" />
        <to uri="bean:batchProcessor?method=process" />
</route>

The problem is, I only want steps 1 and 2 (route: consumeReadyQueue) to
participate in the XA transaction. From what I have gleaned,
consumeReadyQueue forces processBatch to participate in the transaction.
This is not good for my case as processBatch can take up to 30 seconds. Is
there a way to force the commit to happen before processBatch is running? 

Maybe I am approaching this wrong. What are my possible options?



--
View this message in context: 
http://camel.465427.n5.nabble.com/transactions-that-span-multiple-routes-tp5723735.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to