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.hasActiveTransaction(TransactionalJtaTransactionPolicy.java:105)
 ~[camel-cdi-3.4.3.jar:3.4.3]
                at 
org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(RequiredJtaTransactionPolicy.java:26)
 ~[camel-cdi-3.4.3.jar:3.4.3]
                at 
org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(TransactionErrorHandler.java:193)
 ~[camel-jta-3.4.3.jar:3.4.3]
                at 
org.apache.camel.jta.TransactionErrorHandler.processInTransaction(TransactionErrorHandler.java:144)
 ~[camel-jta-3.4.3.jar:3.4.3]
                at 
org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:108)
 ~[camel-jta-3.4.3.jar:3.4.3]
                at 
org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:117)
 ~[camel-jta-3.4.3.jar:3.4.3]
                at 
org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.redeliver(RedeliveryErrorHandler.java:766)
 ~[camel-base-3.4.3.jar:3.4.3]
                at 
org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
 ~[camel-base-3.4.3.jar:3.4.3]
                at 
org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.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(CamelInternalProcessor.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(AsyncProcessorSupport.java:40)
 ~[camel-support-3.4.3.jar:3.4.3]
                at 
org.apache.camel.component.sjms.consumer.InOnlyMessageHandler.handleMessage(InOnlyMessageHandler.java:52)
 ~[camel-sjms-3.4.3.jar:3.4.3]
                at 
org.apache.camel.component.sjms.consumer.AbstractMessageHandler.onMessage(AbstractMessageHandler.java:81)
 ~[camel-sjms-3.4.3.jar:3.4.3]
                at 
org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMessage(JMSMessageListenerWrapper.java:110)
 ~[artemis-jms-client-2.14.0.jar:2.14.0]
                at 
org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOnMessage(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://camel.apache.org/components/latest/others/cdi.html ) 
is here https://github.com/zeppelinux/CamelCDISjmsTest
Please  have a look.

Cheers,
Dmitry

Reply via email to