|
| 1 | +## RabbitMQ 4.0.0 |
| 2 | + |
| 3 | +RabbitMQ `4.0.0` is a new major release. |
| 4 | + |
| 5 | +Starting June 1st, 2024, community support for this series will only be provided to [regularly contributing users](https://github.com/rabbitmq/rabbitmq-server/blob/main/COMMUNITY_SUPPORT.md) and those who hold a valid [commercial support license](https://tanzu.vmware.com/rabbitmq/oss). |
| 6 | + |
| 7 | +## Highlights |
| 8 | + |
| 9 | +Some key improvements in this release are listed below. |
| 10 | + |
| 11 | + * [Khepri](https://www.youtube.com/watch?v=whVqpgvep90), an [alternative schema data store](https://github.com/rabbitmq/rabbitmq-server/pull/7206) developed to replace Mnesia, |
| 12 | + has matured |
| 13 | + * AMQP 1.0 is now a core protocol that is always enabled. Its plugin is now a no-op that only exists to simplify upgrades. |
| 14 | + * The AMQP 1.0 implementation is now significantly more efficient: its peak throughput is [more than double than that of 3.13.x](https://github.com/rabbitmq/rabbitmq-server/pull/9022) |
| 15 | + on some workloads |
| 16 | + * [AMQP 1.0 clients now can manage topologies](https://github.com/rabbitmq/rabbitmq-server/pull/10559) similarly to how AMQP 0-9-1 clients do it |
| 17 | + * The AMQP 1.0 convention (address format) used for interacting with with AMQP 0-9-1 entities [is now easier to reason about](https://github.com/rabbitmq/rabbitmq-server/pull/11618) |
| 18 | + * Mirroring (replication) of classic queues [was removed](https://github.com/rabbitmq/rabbitmq-server/pull/9815) after several years of depracation. For replicated messaging data types, |
| 19 | + use quorum queues and/or streams. Non-replicated classic queues remain and their development continues |
| 20 | + * Classic queue [storage efficiency improvements](https://github.com/rabbitmq/rabbitmq-server/pull/11112), in particular recovery time and storage of multi-MiB messages |
| 21 | + * Node with multiple enabled plugins little on disk data to recover now [start up to 20-30% faster](https://github.com/rabbitmq/rabbitmq-server/pull/10989) |
| 22 | + * CQv1, [the original classic queue storage layer, was removed](https://github.com/rabbitmq/rabbitmq-server/pull/10656) except for the part that's necessary for upgrades |
| 23 | + * Several I/O-related metrics are dropped, they should be [monitored at the infrastructure and kernel layers](https://www.rabbitmq.com/docs/monitoring#system-metrics) |
| 24 | + |
| 25 | +See Compatibility Notes below to learn about **breaking or potentially breaking changes** in this release. |
| 26 | + |
| 27 | +## Release Artifacts |
| 28 | + |
| 29 | +RabbitMQ releases are distributed via [GitHub](https://github.com/rabbitmq/rabbitmq-server/releases). |
| 30 | +[Debian](https://rabbitmq.com/install-debian.html) and [RPM packages](https://rabbitmq.com/install-rpm.html) are available via Cloudsmith mirrors. |
| 31 | + |
| 32 | +[Community Docker image](https://hub.docker.com/_/rabbitmq/), [Chocolatey package](https://community.chocolatey.org/packages/rabbitmq), and the [Homebrew formula](https://www.rabbitmq.com/docs/install-homebrew) |
| 33 | +are other installation options. They are updated with a delay. |
| 34 | + |
| 35 | + |
| 36 | +## Erlang/OTP Compatibility Notes |
| 37 | + |
| 38 | +This release [requires Erlang 26.2](https://www.rabbitmq.com/docs/which-erlang). |
| 39 | + |
| 40 | +[Provisioning Latest Erlang Releases](https://www.rabbitmq.com/docs/which-erlang#erlang-repositories) explains |
| 41 | +what package repositories and tools can be used to provision latest patch versions of Erlang 26.x. |
| 42 | + |
| 43 | + |
| 44 | +## Upgrading to 4.0 |
| 45 | + |
| 46 | +### Documentation guides on upgrades |
| 47 | + |
| 48 | +See the [Upgrading guide](https://www.rabbitmq.com/docs/upgrade) for documentation on upgrades and [GitHub releases](https://github.com/rabbitmq/rabbitmq-server/releases) |
| 49 | +for release notes of individual releases. |
| 50 | + |
| 51 | +This release series only supports upgrades from `3.13.x`. |
| 52 | + |
| 53 | +This release requires **all feature flags** in the 3.x series (specifically `3.13.x`) to be enabled before upgrading, |
| 54 | +there is no upgrade path from 3.12.14 (or a later patch release) straight to `4.0.0`. |
| 55 | + |
| 56 | +### Required Feature Flags |
| 57 | + |
| 58 | +This release does not [graduate](https://www.rabbitmq.com/docs/feature-flags#graduation) any feature flags. |
| 59 | + |
| 60 | +However, all users are highly encouraged to enable all feature flags before upgrading to this release from |
| 61 | +3.13.x. |
| 62 | + |
| 63 | +### Mixed version cluster compatibility |
| 64 | + |
| 65 | +RabbitMQ 4.0.0 nodes can run alongside `3.13.x` nodes. `4.0.x`-specific features can only be made available when all nodes in the cluster |
| 66 | +upgrade to 4.0.0 or a later patch release in the new series. |
| 67 | + |
| 68 | +While operating in mixed version mode, some aspects of the system may not behave as expected. The list of known behavior changes will be covered in future updates. |
| 69 | +Once all nodes are upgraded to 4.0.0, these irregularities will go away. |
| 70 | + |
| 71 | +Mixed version clusters are a mechanism that allows rolling upgrade and are not meant to be run for extended |
| 72 | +periods of time (no more than a few hours). |
| 73 | + |
| 74 | +### Recommended Post-upgrade Procedures |
| 75 | + |
| 76 | +TBD |
0 commit comments