Yeah, TomEE could provide the "java:/TransactionManager" since it is a J2EE
container. I wonder if you use the "transacted=true" option on the sjms
consumer which will rollback the transaction if the router is failed.


On Tue, Sep 1, 2020 at 4:35 AM Shultz, Dmitry <dmitry_shu...@kaltire.com>
wrote:

> Thanks for the reply Zheng.
>
> I'm running very similar code in the TomEE and It doesn't fail on NPE. See
> similar behaviour though:
>
> [Thread-0 (ActiveMQ-client] WARN  o.a.c.jta.TransactionErrorHandler -
> Transaction rollback (0x30730302) redelivered(false) for (MessageId:
> ID:9fd77209-ebc6-11ea-955a-1ee7171b8787 on ExchangeId:
> ID-Kal030841-1598904862181-0-2) caught: test
>
> And after process restart the message is gone.
>
> I can confirm that when I use infinite re-delivery (the error handler
> never exhausted) the message stays in the durable topic as forever even
> after restart. So, I'm not sure if my expectation are correct i.e. does it
> supposed to stay in the topic after error handler redeliveries are
> exhausted?
>
> Cheers,
> Dmitry
>
>
> -----Original Message-----
> From: Zheng Feng [mailto:zf...@redhat.com]
> Sent: Sunday, August 30, 2020 8:58 AM
> To: users@camel.apache.org
> Subject: Re: CDI + SJMS + transacted
>
> Hi Dmitry,
>
> It seems that SJMS [1]  currently only supports the use of internal JMS
> Transactions. There is no support for the Camel Transaction Processor or
> the Java Transaction API (JTA). Also if you want to use the JTA transaction
> provided by the camel-cdi, the TransactionManager should be available via
> JNDI "java:/TransactionManager". Then you are running the camel in the
> standalone environment, and the transaction manager should be provided by
> the third party implementation, such as Narayana ( you can find the jta
> standalone example here [2]). The NPE I think should be fixed by
> CAMEL-14918 [3], and I will try to backport it to the 3.4.x
>
> Regards,
> Zheng Feng
>
> [1]
> https://urldefense.com/v3/__https://camel.apache.org/components/latest/sjms-component.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9P1BTwqO$
> [2]
> https://urldefense.com/v3/__https://github.com/jbosstm/quickstart/tree/master/jta-1_2-standalone__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9Py3UShj$
> [3]
>
> https://urldefense.com/v3/__https://github.com/apache/camel/commit/4421b2bba294dd8828621684c7670f78d811ecd8*diff-773b20d331dac13fb17acfa0f58ac01f__;Iw!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9F_CLTBw$
>
> On Sat, Aug 29, 2020 at 5:50 AM Shultz, Dmitry <dmitry_shu...@kaltire.com>
> wrote:
>
> > Hi All,
> >
> > I'm probably doing something  wrong/stupid, but I can't get the sjms
> > (recent Camel, but same true for 2.25.2) to leave failed messages in
> > the JMS topic (AMQ Artemis) after exception.
> > This is what logged:
> >
> > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> > ID-Kal030841-1598650245838-0-1) caught: null
> > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> > ID-Kal030841-1598650245838-0-1) caught: null
> > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> > ID-Kal030841-1598650245838-0-1) caught: null
> > [ctiveMQ-client-global-threads)] TransactionErrorHandler        ERROR
> > Failed delivery for (MessageId:
> > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on
> > ExchangeId: ID-Kal030841-1598650245838-0-1). Exhausted after delivery
> > attempt: 3 caught: java.lang.NullPointerException
> >
> > Message History (complete message history is disabled)
> >
> >
> ---------------------------------------------------------------------------------------------------------------------------------------
> > RouteId              ProcessorId          Processor
> >                                                 Elapsed (ms)
> > [route1            ] [route1            ]
> > [from[sjms://topic:topic:test?durableSubscriptionId=dmitr] [      1999]
> >                 ...
> > [route1            ] [transacted1       ] [transacted
> >                                               ] [         0]
> >
> > Stacktrace
> >
> > ----------------------------------------------------------------------
> > -----------------------------------------------------------------
> >
> > java.lang.NullPointerException: null
> >                 at
> > org.apache.camel.cdi.transaction.TransactionalJtaTransactionPolicy.has
> > ActiveTransaction(TransactionalJtaTransactionPolicy.java:105)
> > ~[camel-cdi-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(Requ
> > iredJtaTransactionPolicy.java:26)
> > ~[camel-cdi-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(T
> > ransactionErrorHandler.java:193)
> > ~[camel-jta-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.jta.TransactionErrorHandler.processInTransaction(Tran
> > sactionErrorHandler.java:144)
> > ~[camel-jta-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorH
> > andler.java:108)
> > ~[camel-jta-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorH
> > andler.java:117)
> > ~[camel-jta-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$Redeliv
> > eryTask.redeliver(RedeliveryErrorHandler.java:766)
> > ~[camel-base-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(D
> > efaultReactiveExecutor.java:148)
> > ~[camel-base-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(Defa
> > ultReactiveExecutor.java:60)
> > ~[camel-base-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.processor.Pipeline.process(Pipeline.java:147)
> > ~[camel-base-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.processor.CamelInternalProcessor.process(CamelInterna
> > lProcessor.java:286)
> > ~[camel-base-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process
> > (DefaultAsyncProcessorAwaitManager.java:83)
> > ~[camel-base-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorS
> > upport.java:40)
> > ~[camel-support-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.component.sjms.consumer.InOnlyMessageHandler.handleMe
> > ssage(InOnlyMessageHandler.java:52)
> > ~[camel-sjms-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.component.sjms.consumer.AbstractMessageHandler.onMess
> > age(AbstractMessageHandler.java:81)
> > ~[camel-sjms-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMes
> > sage(JMSMessageListenerWrapper.java:110)
> > ~[artemis-jms-client-2.14.0.jar:2.14.0]
> >                 at
> > org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOn
> > Message(ClientConsumerImpl.java:1030)
> > ~[artemis-core-client-2.14.0.jar:2.14.0]
> >
> > So, it looks like rollback is kicked off, but when I restart the
> > process message is gone from the JMS topic.
> >
> > Sample reproducer  (generated using
> > -DarchetypeArtifactId=camel-archetype-cdi as described here
> > https://urldefense.com/v3/__https://camel.apache.org/components/latest
> > /others/cdi.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZX
> > XKak6kEojLVTmcKwcF4puKY9NnrgwcA$  ) is here
> > https://urldefense.com/v3/__https://github.com/zeppelinux/CamelCDISjms
> > Test__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVT
> > mcKwcF4puKY9HBU5Opk$
> > Please  have a look.
> >
> > Cheers,
> > Dmitry
> >
>

Reply via email to