SYSTEM.DEAD.LETTER.QUEUE is a queue where messages are stored when a message fails to be delivered to its intended queue. For example, if a message was intended to be put into QUEUE01, and there was some issue putting the message into QUEUE01, the message will be put into SYSTEM.DEAD.LETTER.QUEUE. The display queue command can be used to determine if there are any messages in SYSTEM.DEAD.LETTER.QUEUE. The curdepth would be greater than 0.
echo "display queue(SYSTEM.DEAD.LETTER.QUEUE)" | runmqsc MANAGER01
The runmqdlq (run dead letter queue handler) command can be used to attemp to resend the messages in SYSTEM.DEAD.LETTER.QUEUE to their intended queue.
cd /opt/mqm/samp/bin runmqdlq SYSTEM.DEAD.LETTER.QUEUE MANAGER01 WAIT(NO) ACTION(RETRY)
The following should be displayed.
AMQ8708: Dead-letter queue handler started to process INPUTQ(SYSTEM.DEAD.LETTER.QUEUE) AMQ8709: Dead-letter queue handler ending
Use the display queue command again to determine if there are any messages in SYSTEM.DEAD.LETTER.QUEUE. If the messages were moved to their intended queue, the curdepth of SYSTEM.DEAD.LETTER.QUEUE will be 0.
If the messages remain in the dead letter queue, there can be a number of things that can cause a message to be placed in the dead letter queue. One possibility is that the queue a message was intended to be PUT into has reached its max depth. Typically, you will want to identify the queue the message was intended to be put into and then see if there is some issue with the target queue. If it is the case that the target queue has reached its max depth, a reasonable temporary resolution is to increase the max depth of the target queue and to then move the messages from the dead letter queue into the target queue.