Redelivery With Tibco
rahul2015 Jun 3, 2015 7:57 PMThis is the scenario am seeing for Jboss6.0.0.Final for which I need a little understanding.
1. Message put in Tibco queue
2. Message read by an MDB
3. In the onMessage have a wait for 6 mins
4. After 5mins which is the default transaction time out set on JBoss, the message is redelivered but goes directly to the DLQ.
5. The waiting thread start processing
Here are the logs:
Message picked up by the MDB:
2015-06-03 18:08:06,112 DEBUG [com.POReceiptMDB] (pool-1-thread-13) Message Received==TextMessage={ Header={ JMSMessageID={ID:QA-EMS-
SERVER.39455317505F9F9C8:3} JMSDestination={Queue[queue/MA.PLANO.Procurement.PurchaseOrder]} JMSReplyTo={null} JMSDeliveryMode={PERSISTENT} JMSRedelivered={false} JMSCorrelationID={null} JMSType={null} JMSTimestamp={Wed Jun 03 18:08:04 CDT 2015} JMSExpiration={0} JMSPriority={4} } Properties={ }
Message Redelivered:
2015-06-03 18:13:04,618 WARN [com.arjuna.ats.arjuna] (Transaction Reaper) ARJUNA-12117 TransactionReaper::check timeout for TX 0:ffff0a150d16:126a:556f888a:10 in state RUN
2015-06-03 18:13:04,618 WARN [com.arjuna.ats.arjuna] (Transaction Reaper Worker 0) ARJUNA-12095 Abort of action id 0:ffff0a150d16:126a:556f888a:10 invoked while multiple threads active within it.
2015-06-03 18:13:04,619 WARN [com.arjuna.ats.arjuna] (Transaction Reaper Worker 0) ARJUNA-12108 CheckedAction::check - atomic action 0:ffff0a150d16:126a:556f888a:10 aborting with 1 threads active!
2015-06-03 18:13:04,653 WARN [com.arjuna.ats.arjuna] (Transaction Reaper Worker 0) ARJUNA-12121 TransactionReaper::doCancellations worker Thread[Transaction Reaper Worker 0,5,jboss] successfully canceled TX 0:ffff0a150d16:126a:556f888a:10
2015-06-03 18:13:04,655 WARN [org.jboss.resource.adapter.jms.inflow.dlq.AbstractDLQHandler] (pool-1-thread-16) Message redelivered=1 max=0 sending it to the dlq TextMessage={ Header={ JMSMessageID={ID:QA-EMS-SERVER.39455317505F9F9C8:3} JMSDestination={Queue[queue/MA.PLANO.Procurement.PurchaseOrder]} JMSReplyTo={null} JMSDeliveryMode=
{PERSISTENT} JMSRedelivered={true} JMSCorrelationID={null} JMSType={null} JMSTimestamp={Wed Jun 03 18:08:04 CDT 2015} JMSExpiration={0} JMSPriority={4} }
Properties={ JMSXDeliveryCount={Integer:2} }
Processing starts again:
2015-06-03 18:19:51,922 ERROR [com.AppParamDAO] (pool-1-thread-13) Error occuring while retrieving application parameters from AppParam: : org.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here
What I dont understand
1. Why does the redelivered message go to the DLQ? Why not to the original queue? The redelivery setting is defined on the queue.
2. If the transaction is rolled back after 5 mins why does the processing start again?