Quorum queues and delivery limits
- RabbitMQ 3.13: every peek counts
- RabbitMQ 4: crashes count, and the count travels
- A replay starts the count over
A quorum queue drops a message, or dead-letters it, once it has been delivered more often than its delivery limit allows (x-delivery-limit or a policy's delivery-limit; RabbitMQ 4 sets 20 when none is configured). What counts as a delivery differs between versions, and that matters for a tool that reads messages and puts them back.
RabbitMQ 3.13: every peek counts
On 3.13 every read that puts the message back counts: a peek in Warren or the management UI, and every message a replay, discard or export looks at but does not take. A few refreshes of the queue page can drop the messages you want to look at.
Warren marks such queues LIMIT in the queue list and reads nothing until you confirm, on the queue page and in every action. Replay rules skip them.
RabbitMQ 4: crashes count, and the count travels
RabbitMQ 4 no longer counts a message put back on purpose. It counts a delivery that ends abnormally: a consumer or Warren dying while holding the message, a dropped connection in the middle of a replay. The count is in the message's x-delivery-count header.
And dead-lettering into another quorum queue carries the count along. With all defaults on RabbitMQ 4.3, a message that a crashing consumer exhausted in its work queue arrived in the quorum DLQ with a count of 21 against the DLQ's limit of 20, and one abandoned delivery there dropped it for good. A DLQ with delivery-limit: -1, a higher limit or a classic DLQ kept it; the full measurement has the details.

Warren shows each message's budget next to its death reason once a delivery was counted, and warns when loaded messages have two or fewer left, saying whether RabbitMQ would drop them or dead-letter them again. Replay or export those first.
A replay starts the count over
RabbitMQ ignores an x-delivery-count a publisher sets, so a replayed message starts with a fresh budget. Warren removes x-delivery-count and x-acquired-count when it replays, so the copy does not show the old number either.