I'm just guessing, but are the 'retries' cumulative? That is, when
the message comes off the second queue (FlowErrorDLQ), does it already
have a retry count of 3?

-- 
Danny Yates
 


-----Original Message-----
From: Barlow, Dustin [mailto:[EMAIL PROTECTED] 
Sent: 20 August 2003 18:34
To: [EMAIL PROTECTED]
Subject: [JBoss-user] Issue with the DQLHandler and multiple DLQs


The setup:

queue/A -> QueueA_MDB -> CMT SSB Business Logic
            |
                |  3 retries, go to FlowErrorDLQ
           \ /
            *
   queue/FlowErrorDLQ -> FlowErrorDLQ_MDB -> CMT SSB Failure Logic
                          |
                          |  3 retries, go to DLQ
                         \ /
                          *
                      queue/DLQ


- QueueA_MDB is configured with it's own invoker-proxy-binding that has .. 

   <MDBConfig>
      <ReconnectIntervalSec>10</ReconnectIntervalSec>
      <DLQConfig>
         <DestinationQueue>queue/FlowErrorDLQ</DestinationQueue>
         <MaxTimesRedelivered>3</MaxTimesRedelivered>
         <TimeToLive>0</TimeToLive>
      </DLQConfig>
   </MDBConfig>

... After 3 failed retries, the message should be pushed by the DLQHandler
to queue/FlowErrorDLQ.

- FlowErrorDLQ_MDB uses the standard invoker-proxy-binding
"message-driven-bean".  After 3 failed retries, the message should be pushed
by the DLQHandler to queue/DLQ.

- queue/DLQ has NO MDB or MessageListener attached.

The scenario:

My test was to force both the MDBs to rollback the CMT in the onMessage() in
order to test if the message ultimately arrives on the queue/DLQ in the
event of catastrophic failure of both the business logic, and the failure
handling logic layers.

The test flow I expected to occur is as follows: 

1.  Message arrives on queue/A
2.  QueueA_MDB->onMessage() fires
3.  QueueA_MDB->log a message
4.  QueueA_MDB->ctx.setRollbackOnly()
5.  retry steps 2-4 3 times.
6.  DLQHandler pushes message to queue/FlowErrorDLQ

7.  Message arrives on queue/FlowErrorDLQ
8.  FlowErrorDLQ_MDB->onMessage() fires
9.  FlowErrorDLQ_MDB->log a message
10. FlowErrorDLQ_MDB->ctx.setRollbackOnly()
11. retry steps 8-10 3 times.
12. DLQHandler pushes message to queue/DLQ

The flow up to step 7 works as expected.  However, what happens after step 7
is as follows:

8.  Error occurs prior to FlowErrorDLQ_MDB->onMessage() being invoked (no
stack trace though)
9.  DLQHandler trace logging shows an internal retry of 3 times
10. DLQHandler pushes message to queue/DLQ

Here's the strange part.  If I configure the retry count of the
FlowErrorDLQ_MDB to be 6 instead of 3 the following flow occurs:

8.  Error occurs prior to FlowErrorDLQ_MDB->onMessage() being invoked (no
stack trace though)
9.  DLQHandler trace logging shows an internal retry of 3 times
10. On retry attempt 4, FlowErrorDLQ_MDB->onMessage() fires
11. FlowErrorDLQ_MDB->log a message
12. FlowErrorDLQ_MDB->ctx.setRollbackOnly()
13. retry (10-12) ** 3 ** times (ie the 4 - 6 retries out of 6)
14. DLQHandler pushes message to queue/DLQ

If I set the FlowErrorDLQ_DMB to retry 10 times, the same behaviour occurs
with the exception that step 13 invokes the FlowErrorDLQ_MDB->onMessage() 7
times.

Any ideas on what could be going wrong with the MDB retry mechanism when
using multiple MDBs and DLQ destinations?

Dustin




-------------------------------------------------------
This SF.net email is sponsored by Dice.com.
Did you know that Dice has over 25,000 tech jobs available today? From
careers in IT to Engineering to Tech Sales, Dice has tech jobs from the
best hiring companies. http://www.dice.com/index.epl?rel_code=104
_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-user


_____________________________________________________________________ 
Notice to recipient: 
The information in this internet e-mail and any attachments is confidential
and may be privileged. It is intended solely for the addressee. If you are
not the intended addressee please notify the sender immediately by
telephone. If you are not the intended recipient, any disclosure, copying,
distribution or any action taken or omitted to be taken in reliance on it,
is prohibited and may be unlawful. 

When addressed to external clients any opinions or advice contained in this
internet e-mail are subject to the terms and conditions expressed in any
applicable governing terms of business or client engagement letter issued by
the pertinent Bank of America group entity. 

If this email originates from the U.K. please note that Bank of America,
N.A., London Branch, Banc of America Securities Limited and Banc of America
Futures Incorporated are regulated by the Financial Services Authority.
_____________________________________________________________________ 




-------------------------------------------------------
This SF.net email is sponsored by: VM Ware
With VMware you can run multiple operating systems on a single machine.
WITHOUT REBOOTING! Mix Linux / Windows / Novell virtual machines
at the same time. Free trial click here:http://www.vmware.com/wl/offer/358/0
_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to