rabbitmq-server icon indicating copy to clipboard operation
rabbitmq-server copied to clipboard

Provide a mechanism for completely disabling AMQP 0-9-1 polling consumers (`basic.get`)

Open michaelklishin opened this issue 9 months ago • 0 comments

Is your feature request related to a problem? Please describe.

Polling consumers can waste a non-trivial amount of resources because, well, that's typical of polling.

Describe the solution you'd like

We could use the deprecated feature mechanism but the goal is not so much to deprecate polling consumers but to disable them entirely.

I would need to take a look at how the similar features are grouped in rabbitmq.conf (since feature flags in RabbitMQ are an upgrade/mixed version cluster safety mechanism, not a way to disable features) but it should be done node-wide.

Clients would get a channel or even a connection error (which are considered unrecoverable in the protocol) if a basic.get frame is received and this feature is disabled.

A small efficiency hit to basic.get is acceptable because basic.get and polling are fundamentally not efficient to begin with, plus we can store this state in a persistent term or even AMQP 0-9-1 channel state.

Describe alternatives you've considered

We have had metrics for polling consumers for a while but many application developers do not pay any attention to them or simply don't have access to the metrics.

Additional context

No response

michaelklishin avatar Jan 17 '25 19:01 michaelklishin