Probably the version 2009.02 fix this bug

http://issues.apache.org/activemq/browse/SMXCOMP-651




Raphaël Delaporte wrote:
> 
> I'm using the SMX 3.3.1 with 2009.01 version (JMS & Camel).
> I was thinking the same thing ... Looks like the JMS consumer never got
> the
> DONE;
> 
> It does the same thing with the ?mep=in-only ...
> 
> 
> OK this works if I do 2 camel routes as you suggested ... Strange isn't it
> ?
> Is it a bug ?
> 
> 
> Raphaël
> 
> 
> 2010/1/17 tranchida <[email protected]>
> 
>>
>> It's look like the jms consumer never receive a done status from camel
>>
>> I don't know maybe it's a bug in servicemix-camel, which version do you
>> use
>> ?
>>
>> You can try to add ?mep=in-only to force an in-only exchange
>>
>> jbi:endpoint:
>> http://esb/jmsProviderErreursDLQ/jmsProviderErreursDLQ?mep=in-out
>>
>> see
>> http://camel.apache.org/how-do-i-set-the-mep-when-interacting-with-jbi.html
>>
>> you can also maybe isolate your route with a camel seda
>>
>> from("jbi:...").to("seda:job");
>>
>> from("seda:job")....
>>
>>
>>
>> Raphaël Delaporte wrote:
>> >
>> > Hi
>> >
>> > Thanks for explaination.
>> > I've been running in other troubles... but this time, I run in a non
>> > transacted routes.
>> >
>> > I've a JMS consumer which calls a Camel JBI endpoint, and if everything
>> > goes
>> > well, calls an other JMS provider to put the message in a queue (this
>> > works
>> > well).
>> > In this Camel endpoint, I want to define an errorHandler which sends
>> the
>> > message to a DLQ for example.
>> >>> errorHandler(deadLetterChannel("jbi:endpoint:
>> > http://esb/jmsProviderErreursDLQ/jmsProviderErreursDLQ";));
>> >
>> > On errors, my custom error handler is called and I am able to find my
>> > message in my DLQ (this works well)
>> > But, my JMS consumer doesn't want to take anymore messages. It seems
>> it's
>> > freezed on the last exchange (and servicemix is freezed as well, cannot
>> > shutdown, etc..)
>> >
>> > When I keep the default error handler, or if I set something like this,
>> it
>> > works.
>> >>> errorHandler(deadLetterChannel("log:myClass"));
>> >
>> > Seems I've got trouble when I want to call other JBI endpoints into the
>> > errorHandler.
>> >
>> > Any ideas of what's happen ?
>> >
>> > Thanks for your help.
>> > Raphaël
>> >
>> >
>> > 2010/1/17 tranchida <[email protected]>
>> >
>> >>
>> >> 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.
>> >>
>> >>
>> >
>> >
>>
>> --
>> View this message in context:
>> http://old.nabble.com/Transaction-rollback-with-Camel-JBI-endpoint-tp27193847p27200582.html
>> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>>
>>
> 
> 

-- 
View this message in context: 
http://old.nabble.com/Transaction-rollback-with-Camel-JBI-endpoint-tp27193847p27200896.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.

Reply via email to