FYI, I just raised https://github.com/apache/camel/pull/4151 to backport
the fix of CAMEL-14918 to 3.4.x. Also I test the "transacted=true" which
the sjms consumer that the message will be sent to the DLQ after the error
handler is exhausted. Is this what you expected ?

On Wed, Sep 2, 2020 at 2:09 PM Zheng Feng <zf...@redhat.com> wrote:

> 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