Skip to content

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

Open
@michaelklishin

Description

@michaelklishin

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

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions