
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.
echo "display queue(SYSTEM.DEAD.LETTER.QUEUE) CURDEPTH" | runmqsc MANAGER01
Something like this should be returned. In this example, there are 10 messages in SYSTEM.DEAD.LETTER.QUEUE.
CURDEPTH(10)
The amqsbcg command can be used to view the messages in the dead letter queue. This will likely produce a lot of output, so you’ll probably want to redirect the output to a file, such as dlq.txt.
The runmqdlq (run dead letter queue handler) command can be used to attempt to resend the messages in SYSTEM.DEAD.LETTER.QUEUE to their intended queue. After attempting to resend the messages to their intended queue, recheck the depth of SYSTEM.DEAD.LETTER.QUEUE.
echo "display queue(SYSTEM.DEAD.LETTER.QUEUE) CURDEPTH" | runmqsc MANAGER01
If the depth is 0, the messages should have been sent to their intended queue.
CURDEPTH(0)
You would then want to confirm that the messages are now on the intended queue.
echo "display queue(QUEUE01) CURDEPTH" | runmqsc MANAGER01
Review the error logs to see if you can determine why the messages were sent to SYSTEM.DEAD.LETTER.QUEUE. One of the most common reasons for a message landing in SYSTEM.DEAD.LETTER.QUEUE is that the browse, inquire, get and/or put permissions have not been granted on the intended queue. In this scenario, refer to IBM MQ - Resolve "AMQ8077W: Entity has insufficient authority to access object".
AMQ8077W: Entity 'john.doe' has insufficient authority to access object 'QUEUE01'.
Did you find this article helpful?
If so, consider buying me a coffee over at