The explanation of autoEnlistInTransaction and the different QOS depending on the flow can be found here -> http://servicemix.apache.org/transactions.html
For my usage, I totaly disable jms and jca flow. I use only seda and pairs of jms consumer/provider for persistence / failover / load balancing. See ref : http://trenaman.blogspot.com/2008/11/jmsjca-flows-in-servicemix-wrong-level.html http://trenaman.blogspot.com/2009/03/new-jms-flow-in-servicemix-4.html Raphaël Delaporte wrote: > > Hi, > > Thanks for your replies. > > 1. I did not set the autoEnlistInTransaction="true" in servicemix.xml, but > I > don't understand for what this property is used for. I've just seen > "Retrieve the value for automatic transaction enlistment" but it's not > very > clear for me ... > -> OK it works with this property !! Very good ! > > > 2. Ok my MEP is InOnly because it comes from a jms consumer : > - but why have I the transaction rolledback if I specify non-existant > targetEndpoint / targetService for example ? Is it because the exchange is > still on the jms component side ? > - How can I specify an InOut MEP on the jms consumer ? > - the defaultMep property does not exist anymore on the new JMS > endpoints > - the synchronous property does not change the MEP > > > 3. Subsidiary question guys. > I've seen in the stacktrace when transaction is rolledback that the flow > used is the SEDA flow. I guess this flow is not persistant at all .. Am I > wrong ? > Is there a way to force this exchange to use other flow, as JMS flow for > instance ? > I commented out the SEDA flow in the servicemix.xml, and it uses the JMS > flow. But this is not really a good method... > > > Thanks a lot ! > Raphaël > > > > 2010/1/17 Jean-Baptiste Onofre <[email protected]> > >> Hi Raph, >> >> be careful, as your MEP is InOnly, in case of error, it can't go back to >> the JMS endpoint. >> >> Try to use InOut MEP, it should be better. >> >> Regards >> JB >> >> >> Raphaël Delaporte wrote: >> >>> Hi, >>> >>> I'm using SMX 3.3.1 with the JMS component 2009.01. >>> >>> I use the jms-consumer endpoint in the XA transacted mode. >>> This works, because if I want to test the transactionnal behaviour, I >>> specify some wrong service endpoint and my JMS message is rolledback to >>> the >>> queue. So that's OK. >>> >>> But my route calls the Camel JBI endpoint within the transaction. >>> If I throw any exception from a camel bean, the transaction is not >>> rolledback, and the JMS message is not redelivered into the queue. >>> It seems the transaction is commited. >>> >>> Here is my configuration : >>> >>> --- JMS SMX component ----- >>> <jms:consumer service="esb:jmsConsumerTrans" endpoint="jmsConsumer" >>> targetService="esb:CamelTrans" targetEndpoint="trans" >>> destinationName="queue/in" connectionFactory="#connectionFactory" >>> transacted="xa" /> >>> >>> >>> --- Camel route ----- >>> public void configure() throws Exception { >>> >>> errorHandler(noErrorHandler()); >>> >>> from("jbi:endpoint:http://esb/CamelTrans/trans") >>> .to(LOG) >>> .beanRef("routes", "erreur"); >>> >>> } >>> >>> public void erreur() throws Exception { >>> Thread.sleep(1000); >>> throw new Exception("erreur ..."); >>> } >>> >>> >>> >>> There is something strange to me (and this is why I guess this is a SMX >>> related and not Camel related). I've enabled the debug mode, and I can >>> see >>> the content of the messages. In the last exchange, I can see an error >>> field >>> with my exception (the one which comes from the Camel endpoint I guess) >>> >>> WARN - SimpleEndpoint - SimpleEndpoint.fail called: >>> DEBUG - DeliveryChannelImpl - Send >>> ID:192.168.0.3-12638f8f9d2-11:0 in DeliveryChannel{servicemix-camel} >>> DEBUG - SecuredBroker - send exchange with secure >>> broker >>> DEBUG - SedaFlow - Called Flow send >>> DEBUG - SedaQueue - >>> org.apache.servicemix.jbi.nmr.flow.seda.sedaqueu...@517bc3 dequeued >>> exchange: InOnly[ >>> id: ID:192.168.0.3-12638f8f9d2-11:0 >>> status: Error >>> role: consumer >>> service: {http://esb}CamelTrans >>> endpoint: trans >>> in: <?xml version="1.0" encoding="UTF-8"?><requete xmlns="http://esb"/> >>> error: java.lang.Exception: erreur ... >>> ] >>> DEBUG - DeliveryChannelImpl - Notifying exchange >>> ID:192.168.0.3-12638f8f9d2-11:0(1b9bbe8) in >>> DeliveryChannel{servicemix-jms} >>> from processInboundSynchronousExchange >>> DEBUG - DeliveryChannelImpl - Notified: >>> ID:192.168.0.3-12638f8f9d2-11:0(1b9bbe8) in >>> DeliveryChannel{servicemix-jms} >>> from sendSync >>> >>> >>> Thanks for your help ! >>> Raphaël >>> >>> >> -- >> Jean-Baptiste Onofré >> --------------------------------- >> HomePage >> http://www.nanthrax.net >> --------------------------------- >> Contacts >> [email protected] >> [email protected] >> --------------------------------- >> OpenSource >> BuildProcess/AutoDeploy >> http://buildprocess.sourceforge.net >> Apache ServiceMix >> http://servicemix.apache.org >> ----------------------------------- >> PGP : 17D4F086 >> > > -- View this message in context: http://old.nabble.com/Transaction-rollback-with-Camel-JBI-endpoint-tp27193847p27200109.html Sent from the ServiceMix - User mailing list archive at Nabble.com.
