I agree and we have to use the transaction manager which provides the resume() and suspend() to support the "REQUIRED_NEW" and "NOT_SUPPORT" policies. please can you raise a JIRA for the configurable jndi name ?
On Wed, Sep 2, 2020 at 4:09 PM Romain Manni-Bucau <rmannibu...@gmail.com> wrote: > AFAIK the transaction manager jndi name is not standard (user transaction > one is) and current one is not zven the "common" one which is in comp/ for > webapps so IMHO: > > - camel-cdi must not have any ee feature (deployment should theorically > fail if validated since injection must not work in standalone) > - either jta integration should use user transaction or make tx mgr > name/static method configurable as in > > https://github.com/apache/openjpa/blob/08bb3a5a0e7573622aa6dc25763cb6513095093b/openjpa-kernel/src/main/java/org/apache/openjpa/ee/AutomaticManagedRuntime.java#L55 > > Le mer. 2 sept. 2020 à 08:33, Zheng Feng <zf...@redhat.com> a écrit : > > > 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 > > >> > > > >> > > > > > >