In servicemix-camel 2009.02, we upgrade the camel version from 1.6.x to 2.x. Since there are some Camel API changed, you need to rebuild the RouteBuilder again.

Willem

Raphaël Delaporte wrote:
I'd like to use the 2009.02 version ... but unfortunatly, the migration is
not as easy it should be ...
Just replacing the old jar by the new one does not work...
Have to modify the camel descriptor, and my java routes are still not loaded
by camel ..


<stack-trace><![CDATA[org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'camelContext': Invocation of init method
failed; nested exception is java.lang.NoSuchMethodError:
com.esb.camel_su.routes.Routes.from(Ljava/lang/String;)Lorg/apache/camel/model/RouteType;

Raphaël


2010/1/17 tranchida <[email protected]>

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