JMS transaction with 2 output endpoints

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

JMS transaction with 2 output endpoints

biouele
Hi,
I use Websphere RAD ( rational application developer ) and I configure apache camel to use JMS transaction into my camel router, my router contains 1 input endpoint and 2 ouput enpoints. I want to validate the rooll back for my transaction when somme error occure ( if jmsEndPoint:myQueue4 does not existe ).

Here is the router config:
public void configure() {
 Policy txReq = new SpringTransactionPolicy(bean(TransactionTemplate.class, "PROPAGATION_REQUIRED"));
 from("jmsEndPoint:myQueue1").to("jmsEndPoint:myQueue2","jmsEndPoint:myQueue4");
  errorHandler(deadLetterChannel("jmsEndPoint:myQueue3"));
}

Camel detects error but the message is commited into jmsEndPoint:myQueue2. Camel try 6 times to write message on  jmsEndPoint:myQueue4  and stop. I have any roll back, and the message is removed on  jmsEndPoint:myQueue1


Here is Websphere RAD log

[11/6/07 14:18:43:485 EST] 0000002b SystemOut     O INFO  2007-11-06 14:18:43,485 [DefaultMessageListenerContainer-75] org.apache.camel.spring.spi.TransactionInterceptor: transaction begin
[11/6/07 14:18:43:485 EST] 0000002b SystemOut     O INFO  2007-11-06 14:18:43,485 [DefaultMessageListenerContainer-75] org.apache.camel.spring.spi.TransactionInterceptor: transaction begin
[11/6/07 14:18:43:531 EST] 0000002b SystemOut     O INFO  2007-11-06 14:18:43,531 [DefaultMessageListenerContainer-75] org.apache.camel.spring.spi.TransactionInterceptor: transaction commit
[11/6/07 14:18:43:531 EST] 0000002b SystemOut     O INFO  2007-11-06 14:18:43,531 [DefaultMessageListenerContainer-75] org.apache.camel.spring.spi.TransactionInterceptor: transaction commit
[11/6/07 14:18:43:531 EST] 0000002b SystemOut     O ERROR 2007-11-06 14:18:43,531 [DefaultMessageListenerContainer-75] org.apache.camel.processor.DeadLetterChannel: On delivery attempt: 0 caught: org.springframework.jms.support.destination.DestinationResolutionException: Destination [myQueue4] not found in JNDI; nested exception is javax.naming.NameNotFoundException: Context: FB07530Node02Cell/nodes/FB07530Node02/servers/server1, name: myQueue4: First component in name myQueue4 not found. [Root exception is org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0]
org.springframework.jms.support.destination.DestinationResolutionException: Destination [myQueue4] not found in JNDI; nested exception is javax.naming.NameNotFoundException: Context: FB07530Node02Cell/nodes/FB07530Node02/servers/server1, name: myQueue4: First component in name myQueue4 not found. [Root exception is org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0]
Caused by:
javax.naming.NameNotFoundException: Context: FB07530Node02Cell/nodes/FB07530Node02/servers/server1, name: myQueue4: First component in name myQueue4 not found. [Root exception is org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0]
        at com.ibm.ws.naming.jndicos.CNContextImpl.processNotFoundException(CNContextImpl.java:4730)
        at com.ibm.ws.naming.jndicos.CNContextImpl.doLookup(CNContextImpl.java:1907)
        at com.ibm.ws.naming.jndicos.CNContextImpl.doLookup(CNContextImpl.java:1862)
        at com.ibm.ws.naming.jndicos.CNContextImpl.lookupExt(CNContextImpl.java:1552)
        at com.ibm.ws.naming.jndicos.CNContextImpl.lookup(CNContextImpl.java:1354)
        at com.ibm.ws.naming.util.WsnInitCtx.lookup(WsnInitCtx.java:172)
        at javax.naming.InitialContext.lookup(InitialContext.java:363)
        at org.springframework.jndi.JndiTemplate$1.doInContext(JndiTemplate.java:123)
        at org.springframework.jndi.JndiTemplate.execute(JndiTemplate.java:85)
        at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:121)
        at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:146)
        at org.springframework.jndi.JndiLocatorSupport.lookup(JndiLocatorSupport.java:93)
        at org.springframework.jms.support.destination.JndiDestinationResolver.resolveDestinationName(JndiDestinationResolver.java:112)
        at org.springframework.jms.support.destination.JmsDestinationAccessor.resolveDestinationName(JmsDestinationAccessor.java:100)
        at org.springframework.jms.core.JmsTemplate.access$100(JmsTemplate.java:76)
        at org.springframework.jms.core.JmsTemplate$3.doInJms(JmsTemplate.java:486)
        at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:428)
        at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:484)
        at org.apache.camel.component.jms.JmsProducer.process(JmsProducer.java:46)
        at org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsynProcessorBridge.process(AsyncProcessorTypeConverter.java:44)
        at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:73)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:103)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:87)
        at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:44)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:61)
        at org.apache.camel.processor.DelegateProcessor.processNext(DelegateProcessor.java:47)
        at org.apache.camel.spring.spi.TransactionInterceptor.access$000(TransactionInterceptor.java:33)
        at org.apache.camel.spring.spi.TransactionInterceptor$1.doInTransactionWithoutResult(TransactionInterceptor.java:47)
        at org.springframework.transaction.support.TransactionCallbackWithoutResult.doInTransaction(TransactionCallbackWithoutResult.java:33)
        at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:127)
        at org.apache.camel.spring.spi.TransactionInterceptor.process(TransactionInterceptor.java:44)
        at org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsynProcessorBridge.process(AsyncProcessorTypeConverter.java:44)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:103)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:87)
        at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:44)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:61)
        at org.apache.camel.processor.DelegateProcessor.processNext(DelegateProcessor.java:47)
        at org.apache.camel.spring.spi.TransactionInterceptor.access$000(TransactionInterceptor.java:33)
        at org.apache.camel.spring.spi.TransactionInterceptor$1.doInTransactionWithoutResult(TransactionInterceptor.java:47)
        at org.springframework.transaction.support.TransactionCallbackWithoutResult.doInTransaction(TransactionCallbackWithoutResult.java:33)
        at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:127)
        at org.apache.camel.spring.spi.TransactionInterceptor.process(TransactionInterceptor.java:44)
        at org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsynProcessorBridge.process(AsyncProcessorTypeConverter.java:44)
        at org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:136)
        at org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:86)
        at org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:40)
        at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:44)
        at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:68)
        at org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:56)
        at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:510)
        at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:445)
        at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:414)
        at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:309)
        at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:234)
        at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:871)
        at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:818)
        at java.lang.Thread.run(Thread.java:801)
Caused by:
org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0


Reply | Threaded
Open this post in threaded view
|

Re: JMS transaction with 2 output endpoints

jstrachan
Am just checking - this thread is resolved right? We answered this
here I think...
http://www.nabble.com/No-JMS-rollback-when-routing-message-to-JMS-queues-with-error-tf4765650s22882.html#a13630141


On 06/11/2007, biouele <[hidden email]> wrote:

>
> Hi,
> I use Websphere RAD ( rational application developer ) and I configure
> apache camel to use JMS transaction into my camel router, my router contains
> 1 input endpoint and 2 ouput enpoints. I want to validate the rooll back for
> my transaction when somme error occure ( if jmsEndPoint:myQueue4 does not
> existe ).
>
> Here is the router config:
> public void configure() {
>  Policy txReq = new SpringTransactionPolicy(bean(TransactionTemplate.class,
> "PROPAGATION_REQUIRED"));
>
> from("jmsEndPoint:myQueue1").to("jmsEndPoint:myQueue2","jmsEndPoint:myQueue4");
>   errorHandler(deadLetterChannel("jmsEndPoint:myQueue3"));
> }
>
> Camel detects error but the message is commited into jmsEndPoint:myQueue2.
> Camel try 6 times to write message on  jmsEndPoint:myQueue4  and stop. I
> have any roll back, and the message is removed on  jmsEndPoint:myQueue1
>
>
> Here is Websphere RAD log
>
> [11/6/07 14:18:43:485 EST] 0000002b SystemOut     O INFO  2007-11-06
> 14:18:43,485 [DefaultMessageListenerContainer-75]
> org.apache.camel.spring.spi.TransactionInterceptor: transaction begin
> [11/6/07 14:18:43:485 EST] 0000002b SystemOut     O INFO  2007-11-06
> 14:18:43,485 [DefaultMessageListenerContainer-75]
> org.apache.camel.spring.spi.TransactionInterceptor: transaction begin
> [11/6/07 14:18:43:531 EST] 0000002b SystemOut     O INFO  2007-11-06
> 14:18:43,531 [DefaultMessageListenerContainer-75]
> org.apache.camel.spring.spi.TransactionInterceptor: transaction commit
> [11/6/07 14:18:43:531 EST] 0000002b SystemOut     O INFO  2007-11-06
> 14:18:43,531 [DefaultMessageListenerContainer-75]
> org.apache.camel.spring.spi.TransactionInterceptor: transaction commit
> [11/6/07 14:18:43:531 EST] 0000002b SystemOut     O ERROR 2007-11-06
> 14:18:43,531 [DefaultMessageListenerContainer-75]
> org.apache.camel.processor.DeadLetterChannel: On delivery attempt: 0 caught:
> org.springframework.jms.support.destination.DestinationResolutionException:
> Destination [myQueue4] not found in JNDI; nested exception is
> javax.naming.NameNotFoundException: Context:
> FB07530Node02Cell/nodes/FB07530Node02/servers/server1, name: myQueue4: First
> component in name myQueue4 not found. [Root exception is
> org.omg.CosNaming.NamingContextPackage.NotFound:
> IDL:omg.org/CosNaming/NamingContext/NotFound:1.0]
> org.springframework.jms.support.destination.DestinationResolutionException:
> Destination [myQueue4] not found in JNDI; nested exception is
> javax.naming.NameNotFoundException: Context:
> FB07530Node02Cell/nodes/FB07530Node02/servers/server1, name: myQueue4: First
> component in name myQueue4 not found. [Root exception is
> org.omg.CosNaming.NamingContextPackage.NotFound:
> IDL:omg.org/CosNaming/NamingContext/NotFound:1.0]
> Caused by:
> javax.naming.NameNotFoundException: Context:
> FB07530Node02Cell/nodes/FB07530Node02/servers/server1, name: myQueue4: First
> component in name myQueue4 not found. [Root exception is
> org.omg.CosNaming.NamingContextPackage.NotFound:
> IDL:omg.org/CosNaming/NamingContext/NotFound:1.0]
>         at
> com.ibm.ws.naming.jndicos.CNContextImpl.processNotFoundException(CNContextImpl.java:4730)
>         at
> com.ibm.ws.naming.jndicos.CNContextImpl.doLookup(CNContextImpl.java:1907)
>         at
> com.ibm.ws.naming.jndicos.CNContextImpl.doLookup(CNContextImpl.java:1862)
>         at
> com.ibm.ws.naming.jndicos.CNContextImpl.lookupExt(CNContextImpl.java:1552)
>         at com.ibm.ws.naming.jndicos.CNContextImpl.lookup(CNContextImpl.java:1354)
>         at com.ibm.ws.naming.util.WsnInitCtx.lookup(WsnInitCtx.java:172)
>         at javax.naming.InitialContext.lookup(InitialContext.java:363)
>         at
> org.springframework.jndi.JndiTemplate$1.doInContext(JndiTemplate.java:123)
>         at org.springframework.jndi.JndiTemplate.execute(JndiTemplate.java:85)
>         at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:121)
>         at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:146)
>         at
> org.springframework.jndi.JndiLocatorSupport.lookup(JndiLocatorSupport.java:93)
>         at
> org.springframework.jms.support.destination.JndiDestinationResolver.resolveDestinationName(JndiDestinationResolver.java:112)
>         at
> org.springframework.jms.support.destination.JmsDestinationAccessor.resolveDestinationName(JmsDestinationAccessor.java:100)
>         at org.springframework.jms.core.JmsTemplate.access$100(JmsTemplate.java:76)
>         at org.springframework.jms.core.JmsTemplate$3.doInJms(JmsTemplate.java:486)
>         at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:428)
>         at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:484)
>         at org.apache.camel.component.jms.JmsProducer.process(JmsProducer.java:46)
>         at
> org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsynProcessorBridge.process(AsyncProcessorTypeConverter.java:44)
>         at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:73)
>         at org.apache.camel.processor.Pipeline.process(Pipeline.java:103)
>         at org.apache.camel.processor.Pipeline.process(Pipeline.java:87)
>         at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:44)
>         at org.apache.camel.processor.Pipeline.process(Pipeline.java:61)
>         at
> org.apache.camel.processor.DelegateProcessor.processNext(DelegateProcessor.java:47)
>         at
> org.apache.camel.spring.spi.TransactionInterceptor.access$000(TransactionInterceptor.java:33)
>         at
> org.apache.camel.spring.spi.TransactionInterceptor$1.doInTransactionWithoutResult(TransactionInterceptor.java:47)
>         at
> org.springframework.transaction.support.TransactionCallbackWithoutResult.doInTransaction(TransactionCallbackWithoutResult.java:33)
>         at
> org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:127)
>         at
> org.apache.camel.spring.spi.TransactionInterceptor.process(TransactionInterceptor.java:44)
>         at
> org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsynProcessorBridge.process(AsyncProcessorTypeConverter.java:44)
>         at org.apache.camel.processor.Pipeline.process(Pipeline.java:103)
>         at org.apache.camel.processor.Pipeline.process(Pipeline.java:87)
>         at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:44)
>         at org.apache.camel.processor.Pipeline.process(Pipeline.java:61)
>         at
> org.apache.camel.processor.DelegateProcessor.processNext(DelegateProcessor.java:47)
>         at
> org.apache.camel.spring.spi.TransactionInterceptor.access$000(TransactionInterceptor.java:33)
>         at
> org.apache.camel.spring.spi.TransactionInterceptor$1.doInTransactionWithoutResult(TransactionInterceptor.java:47)
>         at
> org.springframework.transaction.support.TransactionCallbackWithoutResult.doInTransaction(TransactionCallbackWithoutResult.java:33)
>         at
> org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:127)
>         at
> org.apache.camel.spring.spi.TransactionInterceptor.process(TransactionInterceptor.java:44)
>         at
> org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsynProcessorBridge.process(AsyncProcessorTypeConverter.java:44)
>         at
> org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:136)
>         at
> org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:86)
>         at
> org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:40)
>         at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:44)
>         at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:68)
>         at
> org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:56)
>         at
> org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:510)
>         at
> org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:445)
>         at
> org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:414)
>         at
> org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:309)
>         at
> org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:234)
>         at
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:871)
>         at
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:818)
>         at java.lang.Thread.run(Thread.java:801)
> Caused by:
> org.omg.CosNaming.NamingContextPackage.NotFound:
> IDL:omg.org/CosNaming/NamingContext/NotFound:1.0
>
>
>
>
> --
> View this message in context: http://www.nabble.com/JMS-transaction-with-2-output-endpoints-tf4760393s22882.html#a13613955
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
>


--
James
-------
http://macstrac.blogspot.com/

Open Source Integration
http://open.iona.com