JMS messages moving to DLQ

1.1k views Asked by At

JMS mesages are sometimes moving to the DLQ without throwing any exception. Jboss server instance used is 4.3.0.GA_CP04_EAP.

We are using an an MDB that listens for incoming messages on a queue A, when it receives any message it updates the database and sens an email in one transaction.Transaction is CMT.

Now, what is happening is, sometimes mesages are not picked up by the consumer and they end up in the DLQ. Though from the JMX- console message count i could see that the message once did arrive to the queue A but then goes to the DLQ.

This happens intermittently and does not throw any exceptions on the logs either .

What seems to work most of the times is restarting the servers. No idea about what happens behind the scenes though.

**And after 29 days, same problem has returned. This follows a pattern but varies with every restart. There are 2 clustered serevrs which also do loadbalancing , P1 and P2. First two email messages go to and processed by P1-Email sent Next email message resquest goes to P2-Email sent Next two email messages go to and processed by P1-Email sent Next email message resquest goes to P2-Email NOT SENT and the cycle repeats

I have found a workaround to this nagging problem thanks to the helpful info found at http://leakfromjavaheap.blogspot.in/2013/05/when-dead-letter-queue-becomes-zombie.html

DLQ listener is set up to listen for any incoming messages and puts them back to their intended destination if any of them is found on DLQ. Also, considering the situation where any message is travelling from DLQ to the Queue and back to the DLQ in endless loops, a counter is set to check how many times the message has been to the DLQ before, if it exceeds the limit, then it is put to a Permanent DLQ (DLQ for a DLQ). Application has been running smoothly ever since.

2

There are 2 answers

0
Devesh On

If you can provide the log details when message goes to DLQ, would be better to dig into this issue.

0
rupam On

The logs did not contain any useful info; not even an exception to give a hint. Finally,changed the local tx data source to xa data source and it was a success.Still wondering if there is a reason behind it.