Flow Control

RabbitMQ will reduce the speed of connections which are publishing too quickly for queues to keep up. No configuration is required.

A flow-controlled connection will show a state of flow in rabbitmqctl and the management plugin HTTP API. This means the connection is being blocked and unblocked several times per second, in order to keep the rate of message ingress at one that the rest of the server can handle.

In general, a connection which is in flow control should not see any difference from normal running; the flow state is there to inform the sysadmin that the publishing rate is restricted, but from the client’s perspective it should just look like the network bandwidth to the server is lower than it actually is.

Other components than connections can be in the flow state. This blog post goes into more detail in how to use this information to find bottlenecks in your server.