4 ms·
Every time a dead-lettering happens, RabbitMQ will do this [1]: The dead-lettering process adds an array to the header of each dead-lettered message named x-de
by lobster_johnson 12y ago
Every time a dead-lettering happens, RabbitMQ will do this [1]:
The dead-lettering process adds an array to the header of each dead-lettered message named x-death. This array contains an entry for each time the message was dead-lettered.
This table is never truncated. It exists in the AMQP frame and will grow indefinitely.
The AMQP spec mandates that clients negotiate a frame-max size per connection [2], and I believe RabbitMQ is in violation of the spec through this behaviour if the client specifies a non-zero value. (RabbitMQ even ignored this negotiation prior to 3.1, and there's a document [3] which indicates it ignores limits entirely.)
As a result, clients that follow frame-max strictly according to spec (such as amqplib for Node.js [4]) will refuse to handle violating frames, which is understandable given that clients also like to have predictable buffer allocation.
[1] https://www.rabbitmq.com/dlx.html https://www.rabbitmq.com/dlx.html
[2] https://www.rabbitmq.com/specification.html https://www.rabbitmq.com/specification.html
[3] https://www.rabbitmq.com/amqp-0-9-1-errata.html https://www.rabbitmq.com/amqp-0-9-1-errata.html
[4] https://github.com/squaremo/amqp.node https://github.com/squaremo/amqp.node