MQRC 2053 — queue full
A put failed because the queue reached its maximum depth. The real problem is usually the consumer, not the producer.
What happened
An MQPUT or MQPUT1 returned completion code 2 with reason 2053, MQRC_Q_FULL. The message was not put.
MQPUT failed CompCode=2 Reason=2053 Queue: ORDER.IN DISPLAY QLOCAL(ORDER.IN) CURDEPTH MAXDEPTH QUEUE(ORDER.IN) CURDEPTH(50000) MAXDEPTH(50000) DISPLAY QSTATUS(ORDER.IN) TYPE(QUEUE) IPPROCS(0) OPPROCS(3) UNCOM(NO)
What it means
Every local queue has a maximum depth (MAXDEPTH). When the current depth reaches it, further puts are refused. On a transmission queue the same limit applies, so a stopped channel can make puts to remote queues fail too. Producers are working; messages are not being taken off fast enough.
Typical causes
- The consuming application is stopped, abended or not triggered.
- The consumer is running but slower than the arrival rate, for example after a traffic spike.
- A poison message is repeatedly rolled back, blocking the consumer.
- A channel is stopped or retrying, so its transmission queue fills.
- MAXDEPTH was set too low for normal peaks.
Symptoms
- Producers fail with 2053 while the consumer side is quiet.
- IPPROCS of 0 in queue status means nothing has the queue open for input.
- Depth climbing steadily for a while before the failure; queue-depth alerts may have fired.
- Different from 2192 (storage medium full), where the page set or storage is full rather than the queue's limit.
Where to look
DISPLAY QLOCALfor CURDEPTH and MAXDEPTH.DISPLAY QSTATUSfor IPPROCS, OPPROCS, UNCOM and, where monitoring is enabled, message age.DISPLAY CHSTATUSif the full queue is a transmission queue.- The consumer's job log or CICS log for abends and backouts.
- The dead-letter queue for messages that could not be delivered.
How to diagnose
- Confirm which queue is full and whether it is local or a transmission queue.
- Check IPPROCS: is any consumer attached?
- If none, find out why the consumer stopped — abend, not started, trigger not firing.
- If one is attached, check whether it is progressing or looping on the same message.
- For a transmission queue, check the channel status and the remote side.
- Check whether the arrival rate is unusual.
How to fix
Fix the consumer first: restart it, clear the poison message to a backout or error queue, or restart the channel. Once it drains, producers recover on retry. Raising MAXDEPTH with ALTER QLOCAL can buy time, but only after checking there is page set or storage capacity. Then resubmit or retry failed producer work, and confirm whether any messages were lost.
How to prevent
- Alert on queue depth well before MAXDEPTH, and on IPPROCS dropping to 0.
- Set a backout threshold and backout queue so poison messages are moved aside.
- Size MAXDEPTH and storage for realistic peaks.
- Code producers to handle 2053 with a sensible retry and a clear error.
Production considerations
Interview question
Producers are getting reason code 2053. What do you do?
Stuck on something else?
Ask the community or search the full course.