Hi Just a quick reply.
There is a trasactedInOut URI option for the JMS component. Have you looked at it? On Tue, Apr 7, 2009 at 6:29 PM, Roman Kalukiewicz <[email protected]> wrote: > Hello Camel Riders! > > Let me show an example of a problem I'm working on: > > from("jms:in-queue").split(xpath("/foos/*"), > myAggregator).parallelProcessing().to("jms:splited"); > > (this is not created with IDE, so might be worng but I hope you get the > idea). > > If this flow works as in-out and is transactional then it will not work as > messages are not sent to "jms:splitted" before transaction from > "jms:in-queue" is commited and it is not commited before response from > splitter is not sent back. It just hungs up. > > One solution is to make "jms:splited" non-transactional, but then we agree, > that we can have duplicates on "jms:splited" queue (we sent few messages > already, something fails, transaction is rolled back, we consume it once > again and we resend parts, that were already sent to "splited"). > > I believe the proper behaviour would be to have two separate transactions > here: > * first transaction covers receive operation from in-queue, split and > sending requests to jms:splited and is commited when all requests to > 'jms:splitted' are sent > * second transaction covers all receive operations from jms:splited, > aggregation and sending a response to jms:in-queue. Is commited when final > response is sent. > > This way we are 100% transactional and nothing can be lost and nothing can > be duplicated. > > Right now I don't believe it is possible in camel. Moreover I cannot find a > way to clearly abstract the problem so it can be unified over other > components (not only JMS). > I believe the problem is, that we try to model JMS (that is by its nature > in-only especially when it comes to transactions) as in-out. If we model it > as two separate in-only flows with splitter and agregator it would work > fine, but then we don't have a way to listen only for our responses and to > receive all responses in the same transaction. > > Maybe some of you have any thoughts on this problem? > > Cheers > Roman Kalukiewicz > -- Claus Ibsen Apache Camel Committer Open Source Integration: http://fusesource.com Blog: http://davsclaus.blogspot.com/ Twitter: http://twitter.com/davsclaus Apache Camel Reference Card: http://refcardz.dzone.com/refcardz/enterprise-integration
