RabbitMQ Upgrades

RabbitMQ Upgrades Without the Outage

Last reviewed by Scott Sternloff

Upgrading RabbitMQ is rarely just a version bump. Feature flags, Erlang/OTP compatibility, classic mirrored queue removal, and client library behavior all change between releases — and the failure usually surfaces mid-rollout. We plan the path, test it, and execute it with a rollback that actually works.

The only partner with direct RabbitMQ core team access

senior RabbitMQ SMEs
11+
countries served
26+
enterprise customers
160+
min emergency SLA
15

Trusted for Mission-Critical RabbitMQ by Teams in Finance, Healthcare, Defense, Telecom, and More

Customers

  • Microsoft logo
  • Henry Schein logo
  • Enbridge logo
  • Gojek logo

Partners

  • Broadcom logo
  • Redis logo
  • VMware Tanzu logo
  • OSSeva logo
AceMQ is the Featured Authorized Partner for RabbitMQ

Named by the RabbitMQ Core Team

The Featured Authorized Partner for RabbitMQ — named by the engineers who build it

AceMQ is the Featured Authorized Partner for RabbitMQ, named by the RabbitMQ Core Engineering Team — the people who write and maintain the broker. That recognition covers RabbitMQ support, licensing and professional services, and it makes AceMQ the only RabbitMQ partner with a direct line to the core team. When an escalation needs an answer that is not in the documentation, it does not stop at a support tier.

You do not have to take our word for it — RabbitMQ lists AceMQ on its own site.

See AceMQ listed on rabbitmq.com (opens in a new tab)
Only
RabbitMQ partner with a direct line to the Core Engineering Team
Support · Licensing · Services
the full scope the partner status covers
Below 72 cores
the only provider globally licensing commercial RabbitMQ under Broadcom's minimum

Is This You?

You probably need this if…

  1. 01

    You're on RabbitMQ 3.8 or older and every upgrade attempt has been postponed

  2. 02

    You need to move off classic mirrored queues before upgrading to 4.x, and don't know the blast radius

  3. 03

    Your Erlang/OTP version constrains which RabbitMQ version you can actually run

  4. 04

    A previous upgrade attempt failed partway through and you rolled back

  5. 05

    You're running an end-of-life version with open CVEs and an audit deadline approaching

  6. 06

    Feature flags from a prior upgrade were never enabled, blocking the next one

  7. 07

    You can't get a maintenance window long enough for the upgrade path you were quoted

  8. 08

    You have no non-production environment that genuinely matches production

Outcomes

Where you are now, and where you end up

Concrete state changes, not deliverable counts. This is what actually differs about your RabbitMQ estate when the engagement closes.

  1. Before

    Running an end-of-life RabbitMQ version with known CVEs and no viable upgrade plan.

    After

    On a current supported release, with a documented and repeatable upgrade procedure your team can run for the next version themselves.

  2. Before

    Classic mirrored queues that block the move to RabbitMQ 4.x, with unknown migration risk.

    After

    Migrated to quorum queues with correct member counts and sizing, validated under production-equivalent load.

  3. Before

    Upgrades attempted in a single long maintenance window that overruns and gets rolled back.

    After

    A rolling node-by-node upgrade executed with the cluster serving traffic throughout, and a tested rollback at each step.

  4. Before

    No confidence that client applications will behave correctly against the new broker version.

    After

    Client library compatibility verified per application, with the specific version bumps and code changes identified before the upgrade begins.

  5. Before

    Feature flags left disabled from prior upgrades, silently blocking future ones.

    After

    All required feature flags enabled in the correct order, with the dependency chain documented.

Recognise your estate here? Get a quote for RabbitMQ upgrades from a senior engineer.

Contact Us

Scope

What's covered

  • 01

    Version Path Planning

    Upgrades across 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 and into 4.x, including the multi-hop paths required when you are several versions behind and cannot jump directly. Crossing a major version usually means reaching the latest 3.13 patch you have access to first (3.13.7 was the final community release; commercial builds continue past it) and enabling all feature flags before the jump to 4.x.

  • 02

    Classic to Quorum Migration

    Classic mirrored queues are removed in RabbitMQ 4.x. We plan and execute the migration to quorum queues, including member sizing, memory implications, and the behavioral differences that affect your applications.

  • 03

    Erlang / OTP Compatibility

    Each RabbitMQ release supports a specific Erlang/OTP range. We map your current Erlang version and its constraint, often OS packaging or an approved base image, and sequence the Erlang upgrade alongside the broker upgrade so every node stays compatible with the new version.

  • 04

    Feature Flag Sequencing

    Feature flags must be enabled in order, and an upgrade will refuse to proceed if required flags from a prior version are still disabled. We audit current state and sequence enablement correctly.

  • 05

    Kubernetes & Operator Upgrades

    Cluster Operator version upgrades, StatefulSet rolling update strategy, PodDisruptionBudget configuration, and PVC handling — so a node replacement during upgrade doesn't cost you quorum queue members.

  • 06

    Patch Releases & CVE Fixes

    Most of the year's changes arrive as patch releases inside a series, not as new versions. We keep you on the latest patch of your series, roll each one through the cluster node by node, and, where a series has left community support, apply the patches the commercial license still ships or backport the CVE fix to the build you run.

  • 07

    Client Library Compatibility

    Java, .NET, Python, Go, Ruby, and Node client behavior against the target version, including connection recovery semantics and the deprecations that surface as runtime failures rather than build errors.

Want a senior RabbitMQ engineer to scope this with you? Get a quote or send us a message.

Contact Us

The Engagement

How it actually runs

Every phase has a defined duration and a concrete artifact handed over at the end of it. You always know what stage you're in and what you've received.

  1. Phase 11 week

    Upgrade Assessment

    We inventory what you actually run — RabbitMQ and Erlang/OTP versions per node, queue types and counts, enabled and pending feature flags, plugins, and every client library and version connecting to the cluster. The upgrade path is determined by the constraint you have least control over, and it is usually not the broker.

    You receive

    • Full version and dependency inventory across the estate
    • Target version recommendation with the reasoning stated
    • Identified blockers ranked by effort and risk
    • Client library compatibility matrix per application
  2. Phase 21–2 weeks

    Upgrade Path & Runbook

    RabbitMQ upgrades are not always single-hop. We define the intermediate versions required, the feature flag enablement order, whether a rolling in-place upgrade or a blue-green deployment fits your risk and capacity, and whether classic-to-quorum queue migration needs to happen before, during, or after. Every step gets a validation check and a rollback procedure, written against the release notes of each target version.

    You receive

    • Step-by-step upgrade runbook with per-step validation
    • Rollback procedure tested at each hop, not just at the end
    • Queue migration plan where classic queues are in scope
    • Maintenance window requirements with realistic durations
  3. Phase 31–2 weeks

    Rehearsal in Non-Production

    We run the full upgrade against an environment that matches production in the ways that matter — queue types, message volumes, and client behavior. This is where the surprises surface, which is the entire point of doing it. If you don't have a suitable environment, building one is part of the engagement.

    You receive

    • Completed rehearsal with timings for each step
    • Runbook corrected against what actually happened
    • Performance comparison before and after upgrade
    • Confirmed rollback works from each intermediate state
  4. Phase 4Scheduled window

    Production Execution

    A senior engineer runs or supervises the production upgrade with your team, node by node, with the cluster serving traffic. We monitor queue state, client reconnection, and message flow at every step, and we stop rather than push through if a validation check fails.

    You receive

    • Executed production upgrade with live validation at each node
    • Post-upgrade verification report
    • Feature flag enablement completed in correct order
    • Handover so your team can run the next upgrade independently

RabbitMQ 4 upgrade path: 3.12 to 3.13 to 4.x

RabbitMQ 3.12 upgrades to 3.13, and 3.13 upgrades directly to 4.0, 4.1 or 4.2. A 3.13 cluster reaches 4.3 only through 4.2. Before any hop, every stable feature flag has to be enabled and Erlang/OTP has to meet the target version's minimum. Going to 4.x also removes classic mirrored queues, so those queues need a new home first.

Supported RabbitMQ upgrade paths and what blocks each one
FromToErlang/OTP rangeDo firstBlockers
3.8.x to 3.11.xThe next series, one hop at a timeCheck the compatibility matrix for each hopEnable all stable feature flags before each hop. 3.11.18 or later is the jump-off to 3.12.Skipping a series. Each series upgrades only to the next.
3.12.x3.13.x3.12 runs on OTP 25.0 to 26.2.x. 3.13 needs OTP 26.0 or later, up to 26.2.x.Enable all stable feature flags on 3.12.Hosts still on Erlang 25. Any feature flag left disabled.
3.13.x4.0.x4.0.1 to 4.0.3: OTP 26.2 to 26.2.x. 4.0.4 and later: OTP 26.2 to 27.x.Move to the latest 3.13 patch and enable all stable feature flags with rabbitmqctl enable_feature_flag all.Classic mirrored queues, removed in 4.0. 3.13 with Khepri enabled cannot be upgraded in place.
3.13.x4.1.xOTP 26.2 to 27.xThe same as the 4.0 hop.The same as the 4.0 hop.
3.13.x4.2.x4.2.0 to 4.2.8: OTP 26.2 to 27.x. 4.2.9 and later: OTP 27.0 or later.The same as the 4.0 hop.The same as the 4.0 hop.
4.0.x or 4.1.x4.2.xAs for 4.2.x aboveEnable all stable feature flags.Erlang below the 4.2 minimum.
4.2.x4.3.x4.3.0 to 4.3.2: OTP 26.2 to 27.x. 4.3.3 and later: OTP 27.0 or later, and 28.x from 4.3.6.Enable all stable feature flags.4.3 is reachable only from 4.2.x. 3.13 cannot go straight to 4.3.

Erlang/OTP 26 has reached end of life and is no longer supported by the RabbitMQ project, so an estate on 3.13 or 4.0 that is still on OTP 26 has a runtime upgrade inside the broker upgrade. This is the usual reason a RabbitMQ 3.x to 4.x upgrade service is scoped as a platform change, not a package bump.

RabbitMQ mirrored queues removed in 4.0

  • What changes — after an upgrade to 4.0, the mirroring parts of policies have no effect. Classic queues keep working, with a single replica.
  • How we find them — rabbitmq-diagnostics check_if_cluster_has_classic_queue_mirroring_policy reports whether any policy enables mirroring, and list_policies_with_classic_queue_mirroring lists them.

Quorum queue migration before the RabbitMQ 4.0 upgrade

Mirrored queues move to quorum queues or streams as a quorum queue migration service step, planned before the 4.x hop. Quorum queues are not 100% feature-compatible with mirrored queues, so each queue is checked against the feature matrix first.

RabbitMQ upgrade process: how a rolling upgrade runs node by node

The RabbitMQ project recommends a rolling (in-place) upgrade, where nodes are upgraded one by one, and treats a blue-green deployment as the safest option when a rolling upgrade is not possible or extra safety matters. A rolling upgrade works only where the running version and the target RabbitMQ version have a supported rolling upgrade path, so the upgrade strategy is chosen after the version check, not before it. A grow-then-shrink upgrade is not recommended cluster-wide because it changes replica identities and can move large amounts of data; it is a reasonable way to replace a single node.

Before the first node is stopped

  • Check the upgrade path and the version of Erlang the target release requires, and read the release notes of all versions between the one you run and the target, because resource usage and behaviour can change along the way.
  • Enable every stable feature flag on the running version. A flag left disabled can make the upgrade fail.
  • Confirm there are no alarms, no queue or stream replica sync in progress, and a reasonable load. Back up each node's data directory.
  • Check that the nodes in the cluster can carry the whole workload with one node down, because connections and queue leaders move while it is stopped.

For each node in the cluster

  • Check quorum — rabbitmq-diagnostics check_if_node_is_quorum_critical fails if stopping the node would make quorum queues, streams or internal components lose their quorum. In automation, rabbitmq-upgrade await_online_quorum_plus_one blocks the shutdown until enough nodes are running. The RabbitMQ Cluster Operator on Kubernetes already includes this check in its preStop hook.
  • Drain — rabbitmq-upgrade drain puts the node in maintenance mode: it stops accepting client connections, closes existing ones and transfers quorum queue leaders, so client traffic moves to the other nodes.
  • Upgrade — once the node is stopped, upgrade RabbitMQ and, where the target needs it, Erlang, then start it. A restart takes the node out of maintenance mode, so there is nothing to revive unless the plan changes.
  • Verify — watch monitoring and health checks until the node has rejoined and recovered before touching the next one.

After the last node

When every node runs the new version, enable the stable feature flags it introduces, then run rabbitmq-queues rebalance all, because a rolling upgrade leaves queue and stream leaders unevenly spread across all nodes. Applications must reconnect when their node is drained, through client libraries with automatic connection recovery or a load balancer or host list. A rolling upgrade means different versions run side by side for a while, which is why the mixed-version window is kept short. RabbitMQ does not officially support downgrades, so the rollback plan is a rehearsal on a matching environment and, where extra safety is needed, a blue-green cut-over that keeps the old cluster to switch back to. The RabbitMQ upgrade guide on rabbitmq.com is the reference for each step; the work we add is the sequencing, the rehearsal and someone accountable for the run.

Ready to talk RabbitMQ? Get a quote or send us a message.

Contact Us

RabbitMQ upgrade services: a fixed-scope offer

Most RabbitMQ upgrades and patches we run start with an assessment. The fixed-scope upgrade below is what follows: one agreed path, one rehearsal, one production run, and a written quote within 24 hours of the assessment.

What the fixed-scope upgrade covers
ItemWhat you get
ScopeOne cluster and one agreed upgrade path, for example 3.13 to 4.2, including the Erlang/OTP move and feature flag sequencing. Multi-hop paths are quoted as separate hops.
DeliverablesVersion and dependency inventory, step-by-step runbook, rollback procedure tested in rehearsal, client library compatibility matrix, post-upgrade verification report, and a handover so your team can run the next patch.
Typical durationThree to four weeks for a single-hop upgrade. The production run is rolling and node by node in off-hours windows, which are planned over one to two weeks.
Not in the fixed scopeClassic-to-quorum queue migration, which is scoped on its own. A platform migration is never combined with a version upgrade in one production window.
How we workRemote delivery, guided by your engineers over screen share. We do not fix application code, and remediation beyond the scope is time and materials.
CommercialsA written quote within 24 hours of the assessment.

Next step

Send us your current RabbitMQ version, your Erlang/OTP version and your node count. We reply within 1 hour and follow with the upgrade path for your estate and a written quote.

What we find in RabbitMQ 3.x to 4.x upgrade assessments

Since mid-2025, 20+ organisations have talked to us about moving RabbitMQ 3.x to 4.x, and we have scoped or delivered upgrades for 7+ of them. Most started with an assessment. The findings that change the scope are these:

  • Mirrored-queue policies at scale — the main scope-changer, because every mirrored queue needs a quorum queue or stream plan before the 4.x hop.
  • Feature flags left disabled — flags from an earlier upgrade were never enabled, which blocks the next one.
  • Erlang/OTP 26 end of support — the runtime upgrade arrives before the broker upgrade can start.
  • Old clients — old client libraries and Spring Boot 2.x stacks that are not compatible with 4.x brokers.
  • Weak production hygiene — no publisher confirms, a memory high watermark set above 80%, logs on the root volume, and no monitoring.

Recognise your estate here? Get a quote for RabbitMQ upgrades from a senior engineer.

Contact Us

Customer Success

Real RabbitMQ Results

See how enterprises trust AceMQ for their most critical RabbitMQ workloads.

1 / 8 case studies

All use cases

FAQ

Questions about RabbitMQ upgrades

Can you upgrade RabbitMQ without downtime?

In most clustered deployments, yes. We perform a rolling upgrade one node at a time while the cluster continues serving traffic: the node is put into maintenance mode with rabbitmq-upgrade drain, upgraded, restarted and confirmed back among the running cluster nodes before the next one starts, which requires that your clients handle reconnection correctly and that queue replication is configured to survive a node leaving. Single-node deployments cannot be upgraded without a brief outage — in that case we minimize and schedule the window rather than pretend otherwise.

We're on RabbitMQ 3.8. Can we upgrade straight to 4.x?

No, and attempting it is a common cause of failed upgrades. RabbitMQ requires passing through intermediate versions so that feature flags are enabled in the correct order, and 4.x additionally removes classic mirrored queues, which means queue migration must happen before you get there. We map the specific hops your deployment needs — typically 3.8 to 3.11 or 3.12, then 3.13, then 4.x.

What happens to our classic mirrored queues?

Classic mirrored queues are removed in RabbitMQ 4.x, so they must be migrated to quorum queues before that upgrade. Quorum queues behave differently — they are more memory-sensitive, have different member semantics, and handle poison messages differently. We plan the migration including member count sizing and validate application behavior against quorum queues under load before the cutover.

How long does a RabbitMQ upgrade engagement take?

A straightforward single-hop upgrade on a well-understood cluster typically runs three to four weeks end to end, most of which is assessment and rehearsal rather than execution. Multi-hop upgrades from older versions, or upgrades requiring classic-to-quorum migration, commonly run six to ten weeks. The production execution itself is usually the shortest phase.

Do we need a non-production environment that matches production?

It substantially reduces risk, and where one does not exist we frequently build a representative environment as part of the engagement. Matching production exactly is rarely necessary — what matters is matching queue types, approximate message volumes, and client behavior, because those are what surface upgrade problems. A non-production environment with different queue types tells you very little.

What if the upgrade fails partway through?

Every step in the runbook has a tested rollback, validated during rehearsal rather than assumed. If a validation check fails during production execution, we stop and roll back to the last known-good state rather than pushing forward. This is precisely why the rehearsal phase exists — most upgrade failures we are called in to recover from happened because there was no tested rollback at the point of failure.

Can you help if we're running Tanzu RabbitMQ or a Broadcom-supported deployment?

Yes. AceMQ is the Broadcom VMware Expert Advantage Partner of the Year for the Americas, and we support both open-source RabbitMQ and Tanzu RabbitMQ upgrades. For Tanzu deployments we also handle Cluster Operator upgrades, entitlement and licensing questions, and coordination with Broadcom support where an issue needs to go upstream.

What changes when upgrading to RabbitMQ 4.3?

The metadata store. From 4.3.0 RabbitMQ supports only the Raft-based Khepri metadata store; Mnesia was removed, and the old partition handling strategies went with it, so cluster_partition_handling now has no effect and should come out of rabbitmq.conf. Metadata, quorum queues and streams all follow Raft majority rules on 4.3, which is why we rehearse the move to 4.3 against a copy of your real definitions rather than an empty cluster.

How often should RabbitMQ be patched?

Every patch release in your series, as it ships. RabbitMQ publishes patch releases within a series often: the 4.3 series went from 4.3.0 on 23 April 2026 to 4.3.6 on 16 September 2026, seven releases in under five months. Patches install as a rolling node-by-node change with the cluster serving traffic, so they belong in a routine monthly window rather than waiting for the next major upgrade.

Which RabbitMQ versions still receive patches?

As of 22 October 2026, only the 4.4 and 4.3 series are inside community support, until 31 July 2027 and 31 January 2027. Community support ended for 4.2 on 31 July 2026, for 4.1 on 31 January 2026 and for 3.13 on 30 September 2024. Those series still receive patches under a commercial license: the project lists commercial support for 4.2 to 30 June 2030 and for 3.13 to 31 December 2029, and shipped 4.2.11 on 16 September 2026, after 4.2's community window closed. The full series-by-series table is in our RabbitMQ end-of-life guide.

Can you patch a version we cannot upgrade yet?

Yes. If the series is still inside commercial support, we license and apply the patch releases the project ships for it. If it is past that, as 3.8 to 3.12 are, our extended LTS support backports CVE fixes to the exact build you run, so the upgrade can wait for a proper window without leaving known vulnerabilities open.

What is the difference between a rolling upgrade and a blue-green deployment for RabbitMQ?

A rolling upgrade upgrades the nodes of one cluster one at a time, which keeps the footprint the same but needs a supported rolling path between the two versions and a cluster that can run with a node down. A blue-green deployment builds a new cluster on the target version, moves consumers and then publishers across, and decommissions the old cluster, which costs temporary extra infrastructure but lets you switch back. It is also the route when the versions cannot be clustered together, such as a 3.13 cluster with Khepri enabled.

How do we check for deprecated features before upgrading?

Run rabbitmq-diagnostics check_if_any_deprecated_features_are_used on the current cluster; it exits non-zero if a deprecated feature is in use. The current list includes transient non-exclusive queues, global QoS, RAM nodes, management metrics collection and AMQP address v1, and classic queue mirroring was removed in 4.0. Setting deprecated_features.permit.<feature> = false in non-production lets you test the application as if the feature were already gone. Not every feature can be detected at runtime (global QoS cannot), which is why we also review client code.

Let's talk

Get Off That End-of-Life Version Safely

Tell us what version you're on and what's blocking you. We'll map the actual upgrade path, including the hops and queue migrations most vendors leave out of the quote.

Email Us

Get in Touch

Talk to a RabbitMQ Expert

Send us a message and we'll follow up within 1 hour — or book a free 30-min consultation directly.

305-204-2607
info@acemq.com
66 W. Flagler St. 9th Floor
Miami, FL 33130

Prefer to talk now? Call us directly or use the consultation tab to find a time that works.

We respond within 1 hour.

Pick a time that works — no pressure, no pitch. Just 30 minutes with an expert.

We respond within 1 hour.