流量控制
概述
本指南介绍了 RabbitMQ 节点对发布连接应用的反压机制,以避免不受控制的 内存使用量 增长。这是必要的,因为节点中的某些组件可能无法跟上特别快的发布者,因为它们需要比发布客户端做更多的工作(例如,将数据复制到 N 个对等节点或将其存储在磁盘上)。
流量控制的工作原理
RabbitMQ 会降低发布速度过快的连接,以使队列能够跟上。不需要任何配置。
流量控制的连接将在 rabbitmqctl
、管理 UI 和 HTTP API 响应中显示 flow
状态。这意味着连接每秒会经历多次阻塞和解除阻塞,以将消息传入速率保持在服务器(例如,消息路由到的队列)可以处理的速率。
通常,处于流量控制状态的连接不会看到与正常运行有任何区别;flow
状态是为了通知系统管理员发布速率受限,但从客户端的角度来看,它看起来就像到服务器的网络带宽低于实际带宽一样。
除连接外,其他组件也可能处于 flow
状态。通道、队列和系统中的其他部分可能会应用流量控制,最终会传播回发布连接。