Skip to content

Reference

Look-up facts for RabbitMQ 4.x: release and support matrix, Erlang/OTP compatibility, upgrade paths, ports, queue and exchange types, key rabbitmq.conf settings with defaults, queue arguments, removals by version, CLI tools, access-control tables, a hardening checklist, and selected security advisories. For how these pieces work together see Explanation; for step-by-step tasks see How-to Guides.

Version baseline

Values below are for the 4.3.x series (latest patch 4.3.6, released 2026-09-16) unless a row says otherwise. Sources: the rabbitmq-website docs for 4.3 and the rabbitmq-server release notes, retrieved 2026-09-25.

Release and Support Matrix

Dates come from the release table on rabbitmq.com/release-information (its source data lives in docusaurus.config.js of the website repo). Broadcom calls the commercial end dates "indicative"; the official lifecycle is on the Broadcom support portal.

Series First GA (date) Latest public patch (date) End of community support End of commercial support
4.3 4.3.0 (2026-04-23) 4.3.6 (2026-09-16) 2026-11-30 2028-04-30
4.2 4.2.0 (2025-10-28) 4.2.10 (2026-08-17) 2026-07-31 2030-06-30
4.1 4.1.0 (2025-04-15) 4.1.8 (2026-01-22) 2026-01-31 2027-04-30
4.0 4.0.1 (2024-09-18) 4.0.9 (2025-04-14) ended 2026-09-30
3.13 3.13.0 (2024-02-22) 3.13.7 (2024-08-26) ended 2029-12-31
3.12 3.12.0 (2023-06-02) 3.12.14 (2024-05-06) ended 2025-06-30 (ended)

Public vs commercial patches

Since 2024-06-01, patch releases for a series that is out of community support are published only to paying customers, "with potential exception for very high severity CVEs" (COMMUNITY_SUPPORT.md). This is why security advisories reference versions such as 3.13.8 that are not in the public table. 4.0.0 was never released publicly; the series starts at 4.0.1.

Minor-series cadence in the 4.x line is roughly every six months (4.0 Sep 2024, 4.1 Apr 2025, 4.2 Oct 2025, 4.3 Apr 2026). The website repo labels 4.4 as the development version (/docs/next).

Erlang/OTP Compatibility

From Erlang Version Requirements (4.3 docs) and the release notes. Nodes fail to start on an Erlang version below the minimum.

RabbitMQ versions Minimum Erlang/OTP Maximum Erlang/OTP Notes
4.3.6 27.0 28.x Erlang 28 fully supported from 4.3.6. The same page says Erlang 29 is supported from 4.3.6 but "not all packages list that version" (the matrix still says 28.x)
4.3.3 - 4.3.5, 4.2.9 - 4.2.10 27.0 27.x Erlang 26 is EOL; 4.2.9 raised the minimum to 27.0
4.3.0 - 4.3.2, 4.2.0 - 4.2.8, 4.1.0 - 4.1.4, 4.0.4 - 4.0.9 26.2 27.x Erlang 28 only for brand-new clusters (known issue in mixed-version Khepri clusters)
4.0.1 - 4.0.3 26.2 26.2.x 4.0.x is compatible with Erlang 27 from 4.0.4
3.13.x 26.0 26.2.x Erlang 26 enables TLS client peer verification by default

Upgrade Paths

From the Upgrading guide. All stable feature flags must be enabled before an upgrade.

From To (in-place) Notes
4.2.x 4.3.x Only path into 4.3. Required flags include khepri_db, rabbitmq_4.2.0, quorum_queue_non_voters, message_containers_deaths_v2
4.1.x 4.2.x
4.0.x 4.1.x, 4.2.x
3.13.x 4.0.x, 4.1.x, 4.2.x 3.13 users go to 4.2.x first, then 4.3.x. 3.13 clusters with experimental Khepri enabled cannot upgrade in place (Blue-Green only)
3.12.x 3.13.x Or Blue-Green migration to 4.x

Mixed-version clusters are for rolling upgrades only ("no more than a few hours"). A 4.2.0 node can run next to 4.1.x and 4.0.x nodes; a 4.3.0 node can run next to 4.2.x nodes.

Ports

From the Networking guide.

Port Protocol / use Condition
4369 epmd (peer discovery for nodes and CLI tools) always
5672 / 5671 AMQP 0-9-1 and AMQP 1.0, plain / TLS always (core)
5552 / 5551 RabbitMQ Stream protocol, plain / TLS rabbitmq_stream plugin
6000 - 6500 Stream replication between nodes streams in use
25672 Erlang distribution (inter-node and CLI), AMQP port + 20000 always
35672 - 35682 CLI tool client ports (distribution port + 10000 .. + 10010) CLI use
15672 / 15671 Management UI, HTTP API, rabbitmqadmin, plain / TLS rabbitmq_management plugin
61613 / 61614 STOMP, plain / TLS rabbitmq_stomp plugin
1883 / 8883 MQTT, plain / TLS rabbitmq_mqtt plugin
15674 STOMP over WebSockets rabbitmq_web_stomp plugin
15675 MQTT over WebSockets rabbitmq_web_mqtt plugin
15692 / 15691 Prometheus metrics, plain / TLS rabbitmq_prometheus plugin

Queue Type Matrix

Condensed from the Queues, Quorum Queues and Streams guides.

Feature Classic Quorum Stream
Replicated No (mirroring removed in 4.0) Yes, Raft (Ra) Yes (Osiris log replication)
Default replicas 1 3 (x-quorum-initial-group-size) set by x-initial-cluster-size (default not stated in the 4.3 guide)
Non-durable / exclusive Yes (transient non-exclusive denied by default in 4.3) No No
Read semantics Destructive Destructive Non-destructive, by offset
fsync before confirm Per message persistence Yes, quorum of members No (relies on OS page cache)
TTL / length limits Yes Yes No, uses retention (max-age, max-length-bytes)
Message priority Yes Yes since 4.0; strict priorities since 4.3 No
Dead-lettering Yes Yes (at-most-once or at-least-once) No
Poison-message handling No delivery-limit, default 20 since 4.0 No
Consumer timeout evaluated No (since 4.3) Yes (per queue since 4.3) No
Reacts to memory alarms Yes Yes No (uses minimal RAM)
Single active consumer Yes Yes Yes (since 3.11)
Partitioning via consistent-hash / modulus-hash exchange same Super streams (since 3.11)
Server-side filtering No No Bloom filter (3.13), AMQP 1.0 property filters (4.1), SQL filter expressions (4.2)

Exchange Types

Type Routing Availability
direct Exact routing-key match core
topic Pattern match: * = one word, # = zero or more words core
fanout Every bound queue core
headers Message headers, x-match: all or any core
x-local-random One queue local to the publisher's node, chosen at random core, since 4.0
x-modulus-hash Stable hash distribution over bindings core since 4.3 (was in the sharding plugin)
x-consistent-hash Hash routing key (or header) onto weighted bindings rabbitmq_consistent_hash_exchange plugin
x-random One bound queue at random rabbitmq_random_exchange plugin
x-delayed-message Holds messages for x-delay ms before routing community plugin (rabbitmq-delayed-message-exchange)

Key rabbitmq.conf Settings

Defaults from the 4.3 Configuration guide unless noted.

Key Default Notes
vm_memory_high_watermark.relative 0.6 Publishers blocked above this share of RAM. Recommended range 0.4 - 0.7 (production checklist)
vm_memory_calculation_strategy rss allocated, rss, legacy
disk_free_limit.absolute 50MB Too low for production; use at least the memory watermark size
max_message_size 16777216 (16 MiB) Reduced from 128 MiB in 4.0. Max 536870912
channel_max 2047 0 = unlimited (not recommended)
heartbeat 60 (s)
consumer_timeout 1800000 (30 min) Evaluated by quorum queues only from 4.3
consumer_disconnected_timeout 60 s New in 4.3, quorum queues
default_queue_type classic Node-wide; a vhost default takes precedence
collect_statistics_interval 5000 (ms) Management stats emission interval
loopback_users.guest true guest may only connect from localhost
anonymous_login_user / anonymous_login_pass guest / guest New in 4.0. Set anonymous_login_user = none in production
session_max_per_connection 64 AMQP 1.0
link_max_per_session 256 AMQP 1.0
num_acceptors.tcp 10
cluster_partition_handling ignore No effect since 4.3.0 (Mnesia removed)
quorum_queue.continuous_membership_reconciliation.enabled false CMR, opt-in
quorum_queue.continuous_membership_reconciliation.target_group_size none
quorum_queue.continuous_membership_reconciliation.auto_remove false Removes members on nodes that left the cluster
quorum_queue.continuous_membership_reconciliation.interval 3600000 (60 min)
management.http_body_limit 10485760 (10 MiB) Added by the fix for CVE-2023-46118
deprecated_features.permit.<feature> depends on phase Opt back in to a denied_by_default feature, set on all nodes

Queue Arguments and Policy Keys

Queue argument Policy key Applies to Meaning
x-queue-type n/a all classic, quorum, stream (immutable)
x-quorum-initial-group-size n/a quorum Initial replica count, default 3
x-delivery-limit delivery-limit quorum Default 20 since 4.0; -1 disables. Changeable by policy without redeclare since 4.3
x-dead-letter-exchange / x-dead-letter-routing-key dead-letter-exchange / dead-letter-routing-key classic, quorum DLX target
x-dead-letter-strategy dead-letter-strategy quorum at-most-once (default) or at-least-once
x-max-length / x-max-length-bytes max-length / max-length-bytes classic, quorum; bytes also stream retention
x-overflow overflow classic, quorum drop-head, reject-publish, reject-publish-dlx (classic)
x-message-ttl / x-expires message-ttl / expires classic, quorum
x-delayed-retry-type, x-delayed-retry-min, x-delayed-retry-max delayed-retry-* quorum, 4.3+ Backoff min(min_delay * delivery_count, max_delay)
x-consumer-timeout consumer-timeout quorum, 4.3+ (also consumer argument)
x-max-age max-age stream Units Y M D h m s, for example 7D
x-stream-max-segment-size-bytes stream-max-segment-size-bytes stream Default 500000000; policy applies only at declaration
x-stream-filter-size-bytes stream-filter-size-bytes stream Bloom filter size, 16-255, default 16
x-initial-cluster-size n/a stream Initial replica count
x-queue-leader-locator queue-leader-locator quorum, stream client-local (default) or balanced
x-queue-mode, x-queue-version=1 n/a classic Rejected since 4.3 (CQv1 removed)

Removals and Breaking Changes by Version

Version Removed or changed Replacement
3.12 Classic queue lazy mode stops applying; CQv2 always pages to disk none needed
4.0 Classic queue mirroring removed Quorum queues or streams
4.0 AMQP 1.0 becomes a core protocol; rabbitmq_amqp1_0 plugin is a no-op none needed
4.0 CQv1 storage removed (upgrade path only); classic_queue.default_version = 1 stops boot CQv2
4.0 Default max message size 128 MiB -> 16 MiB max_message_size
4.0 Quorum queue default delivery limit 20 delivery-limit policy + DLX
4.0 mqtt.default_user, mqtt.default_password, amqp1_0.default_user removed anonymous_login_user, anonymous_login_pass
4.0 x-death on (re-)published messages no longer interpreted own x- header
4.1 Initial (pre-auth) AMQP 0-9-1 frame_max 4096 -> 8192; Node.js amqplib < 0.10.7 cannot connect upgrade amqplib
4.1 MQTT max packet size 256 MiB -> 16 MiB mqtt.max_packet_size_authenticated
4.1 rabbitmqctl force_reset deprecated (incompatible with Khepri) reset, forget_cluster_node
4.2 Khepri default for new clusters; AMQP 1.0 durable defaults to false when header omitted set durable=true in clients
4.2 rabbitmq_raft* Prometheus metrics renamed/changed update dashboards
4.3 Mnesia removed; Khepri is the only metadata store; partition handling strategies removed Raft semantics everywhere
4.3 Deprecated features amqp_address_v1, global_qos, queue_master_locator, transient_nonexcl_queues, amqp_filter_set_bug now denied by default; ram_node_type removed durable queues, per-consumer QoS
4.3 x-queue-mode / CQv1 arguments rejected; consumer timeouts no longer evaluated for classic queues and streams quorum queues for timeouts
4.3 rabbitmqadmin v1 download endpoint removed rabbitmqadmin v2

CLI Tools

Tool Purpose
rabbitmqctl Node and cluster management: users, vhosts, permissions, policies, feature flags, join_cluster, forget_cluster_node
rabbitmq-diagnostics Health checks and inspection: status, check_running, check_alarms, memory_breakdown, check_if_node_is_quorum_critical, observer
rabbitmq-plugins Enable/disable plugins
rabbitmq-queues Quorum queue and stream replica management: quorum_status, add_member, delete_member, grow, shrink, rebalance
rabbitmq-streams Stream-specific: stream_status, add_super_stream, add_replica, delete_replica
rabbitmq-upgrade Upgrade helpers: drain, revive, await_online_quorum_plus_one
rabbitmqadmin v2 HTTP API client (Rust, rabbitmqadmin-ng); declares objects, health checks, definitions, Blue-Green migration helpers

Plugins (selected)

Plugin Adds
rabbitmq_management Management UI and HTTP API on 15672
rabbitmq_prometheus /metrics on 15692
rabbitmq_stream, rabbitmq_stream_management Stream protocol on 5552 and UI pages
rabbitmq_mqtt, rabbitmq_web_mqtt MQTT 3.1, 3.1.1 and 5.0 (5.0 since 3.13); over WebSockets
rabbitmq_stomp, rabbitmq_web_stomp STOMP; over WebSockets
rabbitmq_federation, rabbitmq_shovel (+ _management) Inter-cluster links; Shovel gained a local protocol in 4.2
rabbitmq_auth_backend_oauth2, rabbitmq_auth_backend_ldap, rabbitmq_auth_backend_http, rabbitmq_auth_backend_cache, rabbitmq_auth_mechanism_ssl Authentication and authorization backends
rabbitmq_consistent_hash_exchange, rabbitmq_random_exchange Extra exchange types
rabbitmq_event_exchange Internal events published to amq.rabbitmq.event
rabbitmq_tracing Message tracing into log files (Firehose)
rabbitmq_peer_discovery_k8s, _aws, _consul, _etcd Cluster formation
rabbitmq_trust_store Per-client certificate allow-list

Access Control

Authentication backends

Method Use case
Internal user database Default. Passwords hashed with SHA-256 by default (password_hashing_module)
OAuth 2.0 / JWT (rabbitmq_auth_backend_oauth2) SSO via Keycloak, Entra ID, Auth0, UAA and others. Validates JWTs against JWKS; configure auth_oauth2.issuer (discovery) or auth_oauth2.jwks_uri
LDAP (rabbitmq_auth_backend_ldap) Directory-based identity and authorization
x509 / mTLS (rabbitmq_auth_mechanism_ssl) EXTERNAL SASL mechanism; certificate CN or SAN maps to a user
HTTP (rabbitmq_auth_backend_http) Custom decisions from a REST service
Cache (rabbitmq_auth_backend_cache) Caches decisions of another backend
Anonymous (ANONYMOUS SASL, 4.0+) Logs in as anonymous_login_user; disable in production

Permissions

Permissions are per-vhost regex triples (configure, write, read); topic permissions add routing-key regexes for topic exchanges.

Permission Covers
configure Declare/delete queues and exchanges (passive declares also checked since 4.3)
write Publish to exchanges, bind (as destination side)
read Consume from queues, bind (as source side), purge
User tag Management access
management Own vhosts via UI/API
policymaker management + policies and parameters in own vhosts
monitoring management + read-only view of all connections, channels, node metrics
administrator Everything, including users, vhosts and cluster-wide settings

Hardening Checklist

Based on the Production Checklist and TLS guide.

  • Delete or lock down guest; keep loopback_users.guest = true.
  • Disable anonymous logins: anonymous_login_user = none and omit ANONYMOUS from auth_mechanisms.
  • Require TLS (5671, 5551, 8883, 61614, 15671) and close plaintext listeners in production.
  • Encrypt inter-node traffic with -proto_dist inet_tls; keep 4369, 25672 and 35672-35682 off public networks.
  • Generate a strong, unique Erlang cookie per cluster; it is a shared secret, not a fine-grained credential.
  • Bind the management listener to a private network or front it with an authenticating proxy; grant administrator sparingly.
  • Prefer OAuth 2.0 with audience-scoped tokens (auth_oauth2.resource_server_id); the draft 4.4.0 notes validate OIDC discovery responses more strictly (HTTPS endpoints, matching issuer).
  • Set disk_free_limit.absolute to at least the memory watermark size.
  • Keep the quorum queue delivery-limit (default 20) and add a dead-letter target.
  • Remove cluster_partition_handling keys after upgrading to 4.3 (no effect).
  • Encrypt /var/lib/rabbitmq at the OS or volume level (RabbitMQ does not encrypt data at rest).
  • Ship rabbitmq_event_exchange events and logs to a SIEM.
  • Watch the GitHub Security Advisories and stay on the latest 4.3.x patch.

Security Advisories (selected)

All from the rabbitmq-server GitHub advisories list (retrieved 2026-09-25).

Advisory Published Severity Summary Fixed in
GHSA-w6cq-9cf4-gqpg (CVE-2023-46118) 2023-10-23 Moderate HTTP API had no request body limit; large publish over HTTP could OOM a node 3.11.24, 3.12.7 (adds management.http_body_limit)
GHSA-pj33-75x5-32j4 2024-11-06 Moderate HTTP API queue deletion endpoint did not verify the required permission see advisory
GHSA-g58g-82mw-9m3p (CVE-2025-30219) 2025-03-25 Moderate (6.1) XSS via unescaped vhost name in a management UI error message 4.0.3, 3.13.8
GHSA-gh3x-4x42-fvq8 2025-06-18 Moderate Node could log the Basic Auth header of an HTTP request see advisory
GHSA-cw8c-4m83-9c6w 2026-07-09 Critical Trust-store allow-list matched on issuer + serial only see advisory
GHSA-f9f2-q3jf-wfj3 2026-07-23 High OAuth 2.0 client secret exposed via an unauthenticated JavaScript endpoint see advisory
GHSA-cfqc-c682-93mm 2026-08-18 High Web STOMP: compressed pre-authentication messages exhaust memory see advisory

2026 advisory wave

The advisory list grew from about ten entries (2021-2025) to roughly 90 between May and September 2026, covering the management UI/API, MQTT, STOMP, OAuth 2.0, Shovel, Federation and streams. Several are High or Critical. Fixed versions for older series are commercial-only; open-source users should run the latest 4.3.x patch.

Performance Reference Points

Benchmark caveat

Only the first two rows are from official release notes. The others are order-of-magnitude community figures (unverified as of 2026-09); run perf-test or the stream PerfTest tool on your own hardware.

Workload Figure Source
AMQP 1.0 peak throughput, 4.0 vs 3.13 More than double on some workloads 4.0.1 release notes
Quorum queue per-message memory, 4.3 About halved "in many scenarios" (compact message references) 4.3.0 release notes
Quorum queue, persistent, 3 replicas ~30k-100k msg/s per queue on NVMe community, unverified
Classic queue, persistent ~50k-150k msg/s per queue community, unverified
Stream protocol, 3 replicas 1M+ msg/s per cluster community, unverified

Sources