This is an umbrella issue for a number of closely related discussions on the limits RabbitMQ supports or should support with @the-mikedavis @ansd @acogoluegnes.
Problem Definition
The VMware, Inc. part of the core team proposes reviewing our limits to eventually (likely before 4.4.0) converge on the following limits design/structure/separation:
- Per-user and per-virtual host apply to all protocols
connection_max covers core protocols (AMQP 1.0, AMQP 0-9-1)
{plugin}.connection_max covers each plugin protocol, including their Protocol-over-WebSockets variants, so mqtt.connections_max will cover both MQTT and MQTT-over-WebSockets
Note that most of this design is already in place but given the number of limits and protocols RabbitMQ supports, we need to review that nothing is missing, in particular for the per-user and per-virtual host limits.
HTTP API
If we put the WebSockets-based protocols aside, the HTTP API is not really covered by the above limits and given the request-oriented nature of HTTP (even with persistent connections, even with HTTP/2, HTTP/3), the protective measure here is a Ranch-level connection limit introduced in #7753, #7593.
Tanzu RabbitMQ Protocols
connections_max should cover AMQP 1.0-over-Websockets since its a WebSocket variant of the core protocols.
Remaining Items as a TODO List
This is an umbrella issue for a number of closely related discussions on the limits RabbitMQ supports or should support with @the-mikedavis @ansd @acogoluegnes.
Problem Definition
The VMware, Inc. part of the core team proposes reviewing our limits to eventually (likely before
4.4.0) converge on the following limits design/structure/separation:connection_maxcovers core protocols (AMQP 1.0, AMQP 0-9-1){plugin}.connection_maxcovers each plugin protocol, including their Protocol-over-WebSockets variants, somqtt.connections_maxwill cover both MQTT and MQTT-over-WebSocketsNote that most of this design is already in place but given the number of limits and protocols RabbitMQ supports, we need to review that nothing is missing, in particular for the per-user and per-virtual host limits.
HTTP API
If we put the WebSockets-based protocols aside, the HTTP API is not really covered by the above limits and given the request-oriented nature of HTTP (even with persistent connections, even with HTTP/2, HTTP/3), the protective measure here is a Ranch-level connection limit introduced in #7753, #7593.
Tanzu RabbitMQ Protocols
connections_maxshould cover AMQP 1.0-over-Websockets since its a WebSocket variant of the core protocols.Remaining Items as a TODO List
stream.connection_maxtostream.max_connections(MK)mqtt.max_connections(Addmqtt.max_connectionsper-node connection limit #16367)stomp.max_connections(Addstomp.max_connectionsper-node connection limit #16368)3.7.03.7.0(Bump Cuttlefish to3.7.0#16389)connection_maxin the core broker asmax_connections(rabbitmq.conf: renameconnection_max,channel_maxin a backwards-compatible way (with aliases) #16414)management.*.max_connectionsandprometheus.*.max_connectionslimits #16407)