2 Replies Latest reply on Jun 5, 2015 6:18 PM by rahul2015

    Redelivery With Tibco

    rahul2015

      This 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?

        • 1. Re: Redelivery With Tibco
          rahul2015

          Ok so found if I have dLQMaxResent set on the MDB it does get redelivered to the queue again.

          Can someone help me understanding as to why "If the transaction is rolled back after 5 mins why does the processing start again?"

          • 2. Re: Redelivery With Tibco
            rahul2015

            So here are a few scenario's

            1. Tibco Redelivery set as 2 and dLQMaxResent =0. On error after it is redelivered it goes to the DLQ.

            2. Tibco Redelivery set as 2 and dLQMaxResent=1. The message is redelivered 2 times and on failure doesnt go to the DLQ

            3. Tibco Redelivery set as 3 and dLQMaxResent=1. The message is redelivered 3 times and on failure doesnt go to the DLQ

            Seems like dLQMaxResent which is set on the MDB is only working for the value 0. How do can I make the settings so after 1 or 2 redeliveries it goes to the DLQ?