Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

RabbitMQ: Pushing Messages to the Back of the Queue on NAck

DZone's Guide to

RabbitMQ: Pushing Messages to the Back of the Queue on NAck

Free Resource

Modernize your application architectures with microservices and APIs with best practices from this free virtual summit series. Brought to you in partnership with CA Technologies.

Some useful discussion on the RabbitMQ mailing list looked at a way to push messages to the back of a queue upon negative acknowledgement.  Here was the scenario:

> Scenario:
> I'm processing messages from a queue with confirmation required.
> The number of messages relative to the consumption rate can be quite
> high at times. In excess of hundreds of thousands of messages, with
> consumption rate in the low hundreds per second range.
>> Sometimes we have to abandon processing a message for some transient
> reason (eg: external resource is locked/unavailable), and so we send a
> NAck.
> At the moment, RabbitMQ will immediately redeliver that message to any
> of the consumers. If the transient condition is still in place, we can
> potentially get into a tight loop where we're constantly consuming the
> same message(s) hundreds of times per second.
>> For our scenario, we *can* duplicate the message, send it to the
> exchange/queue, and Ack the original.


The advice on this email has some good suggestions for how to prevent getting into a tight loop.


The Integration Zone is proudly sponsored by CA Technologies. Learn from expert microservices and API presentations at the Modernizing Application Architectures Virtual Summit Series.

Topics:

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}