IBM Support

Messages are blocked in the MQ Queue with ‘MQJMS1079: Unable to write message to dead letter queue error messages’

Troubleshooting


Problem

Messages are blocked in the MQ Queue with ‘MQJMS1079: Unable to write message to dead letter queue error messages’

Symptom

Messages are blocked in the MQ Queue with ‘MQJMS1079: Unable to write message to dead letter queue error messages’
Error Message
The messages are getting picked-up and again thrown back to the queue in MQ by the Agents, by throwing following error message:
 
2008-12-11 15:56:34,903:INFO   :Thread-23_QManagerService_0: Successfully reconnected to JMS server                       [system]: JMSConsumer              2008-12-11 15:56:34,908:ERROR  :Thread-23_QManagerService_0: [1229010994908] MQJMS1079: Unable to write message to dead letter queue [system]: JMSConsumer              2008-12-11 15:56:34,913:ERRORDTL:Thread-23_QManagerService_0: [1229010994908]javax.jms.JMSException: MQJMS1079: Unable to write message to dead letter queue at com.ibm.mq.jms.services.ConfigEnvironment.newException(ConfigEnvironment.java:595) at com.ibm.mq.jms.MQMessageConsumer.deadLetter(MQMessageConsumer.java:4486) at com.ibm.mq.jms.MQMessageConsumer.removeBadMessage(MQMessageConsumer.java:4753) at com.ibm.mq.jms.MQMessageConsumer.getMessage(MQMessageConsumer.java:3578) at com.ibm.mq.jms.MQMessageConsumer.receiveInternal(MQMessageConsumer.java:2863) at com.ibm.mq.jms.MQMessageConsumer.receive(MQMessageConsumer.java:2666) at com.yantra.interop.services.jms.JMSConsumer.run(JMSConsumer.java:292) at java.lang.Thread.run(Thread.java:797) [system]: JMSConsumer              2008-12-11 15:56:34,914:WARN   :Thread-23_QManagerService_0: Exception during receiving. Will retry until successful.     [system]: JMSConsumer     

Resolving The Problem

Cause:
---------------
In regards to a WAS application (actually the underlying MQJMS) would attempt to write to the Dead Letter Queue (DLQ) is that it is trying to handle a "poison" message, that is a message that causes the WAS application to fail, resulting in the backout of the transaction, part of which causes the poison message to be put back on the input queue. This can result in a cycle of backout/failure effectively bringing the application to a halt if no BackoutQueue/BackoutThreshold is defined.

The WMQ V6 Infocenter has this information:
"The WebSphere® MQ queue manager keeps a record of the number of times that each message has been backed out. When this number reaches a configurable threshold, the ConnectionConsumer requeues the message on a named "requeue" queue. If this requeue fails for any reason, the message is removed from the queue and either requeued to the dead-letter queue, or discarded."

ref: https://www.ibm.com/docs/en/ibm-mq/8.0?topic=consumers-poison-messages-in-xms
Action:
------------
Please define a Dead Letter Queue on the queue manager which is attached to the failing application. Ensure the application has sufficient access to this queue. Only then will we be able to see the reason for the failure and investigate further. The WMQ Explorer can be used to view the DLQ and format the DLQ header which contains the MQRC.

[{"Product":{"code":"SS6PEW","label":"IBM Sterling Order Management"},"Business Unit":{"code":"BU048","label":"IBM Software"},"Component":"Not Applicable","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All","Edition":"","Line of Business":{"code":"LOB59","label":"Sustainability Software"}}]

Historical Number

NFX4649

Document Information

Modified date:
30 May 2024

UID

swg21559041