Skip to content

Commit 76953d7

Browse files
Merge pull request #12043 from rabbitmq/mergify/bp/v4.0.x/pr-12042
Update 4.0 release notes (backport #12042)
2 parents f7a3440 + 8986bb0 commit 76953d7

File tree

1 file changed

+217
-16
lines changed

1 file changed

+217
-16
lines changed

release-notes/4.0.0.md

Lines changed: 217 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
## RabbitMQ 4.0.0-beta.4
1+
## RabbitMQ 4.0.0-beta.5
22

3-
RabbitMQ `4.0.0-beta.4` is a preview of a new major release.
3+
RabbitMQ `4.0.0-beta.5` is a preview of a new major release.
44

55
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).
66

@@ -20,20 +20,73 @@ Some key improvements in this release are listed below.
2020
use quorum queues and/or streams. Non-replicated classic queues remain and their development continues
2121
* Classic queue [storage efficiency improvements](https://github.com/rabbitmq/rabbitmq-server/pull/11112), in particular recovery time and storage of multi-MiB messages
2222
* Nodes with multiple enabled plugins and little on disk data to recover now [start up to 20-30% faster](https://github.com/rabbitmq/rabbitmq-server/pull/10989)
23-
* 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
24-
* 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)
23+
* New exchange type: [Local Random Exchange](https://rabbitmq.com/docs/next/local-random-exchange)
2524

2625
See Compatibility Notes below to learn about **breaking or potentially breaking changes** in this release.
2726

2827
## Breaking Changes and Compatibility Notes
2928

30-
* RabbitMQ 3.13 [rabbitmq.conf](https://www.rabbitmq.com/docs/configure#config-file) settings `mqtt.default_user`, `mqtt.default_password`, and `amqp1_0.default_user` are unsupported in RabbitMQ 4.0
31-
Instead, set the new RabbitMQ 4.0 settings `anonymous_login_user` and `anonymous_login_pass` (both values default to `guest`).
32-
For production scenarios, [disallow anonymous logins](https://www.rabbitmq.com/docs/next/production-checklist#anonymous-login)
33-
* RabbitMQ 3.13 `rabbitmq.conf` setting `rabbitmq_amqp1_0.default_vhost` is unsupported in RabbitMQ 4.0.
34-
Instead `default_vhost` will be used to determine the default vhost an AMQP 1.0 client connects to(i.e. when the AMQP 1.0 client does not define the vhost in the `hostname` field of the `open` frame)
35-
* RabbitMQ Shovels will be able connect to a RabbitMQ 4.0 node via AMQP 1.0 only when the Shovel runs on a RabbitMQ node >= `3.13.7`
36-
* Quorum queues will now always set a default `delivery-limit` of 20 which can be increased or decreased by policies and queue arguments but cannot be unset. Some applications or configurations may need to be updated to handle this.
29+
### Classic Queues is Now a Non-Replicated Queue Type
30+
31+
After three years of deprecated, classic queue mirroring was completely removed in this version.
32+
[Quorum queues](https://www.rabbitmq.com/docs/quorum-queues) and [streams](https://www.rabbitmq.com/docs/streams) are two mature
33+
replicated data types offered by RabbitMQ 4.x. Classic queues continue being supported without any breaking changes
34+
for client libraries and applications but they are now a non-replicated queue type.
35+
36+
After an upgrade to 4.0, all classic queue mirroring-related parts of policies will have no effect.
37+
Classic queues will continue to work like before but with only one replica.
38+
39+
Clients will be able to connect to any node to publish to and consume from any non-replicated classic queues.
40+
Therefore applications will be able to use the same classic queues as before.
41+
42+
See [Mirrored Classic Queues Migration to Quorum Queues](https://www.rabbitmq.com/docs/migrate-mcq-to-qq) for guidance
43+
on how to migrate to quorum queues for the parts of the system that really need to use replication.
44+
45+
### Quorum Queues Now Have a Default Redelivery Limit
46+
47+
Quorum queues now have a default [redelivery limit](https://www.rabbitmq.com/docs/next/quorum-queues#poison-message-handling) set to `20`.
48+
49+
### CQv1 Storage Implementation was Removed
50+
51+
CQv1, [the original classic queue storage layer, was removed](https://github.com/rabbitmq/rabbitmq-server/pull/10656)
52+
except for the part that's necessary for upgrades to CQv2 (the 2nd generation).
53+
54+
### Several Disk I/O-Related Metrics were Removed
55+
56+
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)
57+
58+
### Default Maximum Message Size Reduced to 16 MiB
59+
60+
Default maximum message size is reduced to 16 MiB (from 128 MiB).
61+
62+
The limit can be increased via a `rabbitmq.conf` setting:
63+
64+
```ini
65+
# 32 MiB
66+
max_message_size = 33554432
67+
```
68+
69+
However, it is recommended that such large multi-MiB messages are put into a blob store, and their
70+
IDs are passed around in messages instead of the entire payload.
71+
72+
### AMQP 1.0
73+
74+
RabbitMQ 3.13 `rabbitmq.conf` setting `rabbitmq_amqp1_0.default_vhost` is unsupported in RabbitMQ 4.0.
75+
76+
Instead `default_vhost` will be used to determine the default vhost an AMQP 1.0 client connects to(i.e. when the AMQP 1.0 client does not define the vhost in the `hostname` field of the `open` frame).
77+
78+
### MQTT
79+
80+
RabbitMQ 3.13 [rabbitmq.conf](https://www.rabbitmq.com/docs/configure#config-file) settings `mqtt.default_user`, `mqtt.default_password`,
81+
and `amqp1_0.default_user` are unsupported in RabbitMQ 4.0.
82+
83+
Instead, set the new RabbitMQ 4.0 settings `anonymous_login_user` and `anonymous_login_pass` (both values default to `guest`).
84+
For production scenarios, [disallow anonymous logins](https://www.rabbitmq.com/docs/next/production-checklist#anonymous-login).
85+
86+
### Shovels
87+
88+
RabbitMQ Shovels will be able connect to a RabbitMQ 4.0 node via AMQP 1.0 only when the Shovel runs on a RabbitMQ node >= `3.13.7`.
89+
3790

3891
## Erlang/OTP Compatibility Notes
3992

@@ -66,10 +119,10 @@ there is no upgrade path from 3.12.14 (or a later patch release) straight to `4.
66119

67120
### Required Feature Flags
68121

69-
This release does not [graduate](https://www.rabbitmq.com/docs/feature-flags#graduation) any feature flags.
122+
This release [graduates](https://www.rabbitmq.com/docs/feature-flags#graduation) all feature flags introduced up to `3.13.0`.
70123

71-
However, all users are highly encouraged to enable all feature flags before upgrading to this release from
72-
3.13.x.
124+
All users must enable all stable [feature flags] before upgrading to 4.0 from
125+
the latest available 3.13.x patch release.
73126

74127
### Mixed version cluster compatibility
75128

@@ -92,11 +145,159 @@ TBD
92145

93146
## Changes Worth Mentioning
94147

95-
TBD
148+
This section is incomplete and will be expanded as 4.0 approaches its release candidate stage.
149+
150+
### Core Server
151+
152+
#### Enhancements
153+
154+
* Efficient sub-linear quorum queue recovery on node startup using checkpoints.
155+
156+
GitHub issue: [#10637](https://github.com/rabbitmq/rabbitmq-server/pull/10637)
157+
158+
* Classic queue storage v2 (CQv2) optimizations. For example, CQv2 recovery time on node boot
159+
is now twice as fast for some data sets.
160+
161+
GitHub issue: [#11112](https://github.com/rabbitmq/rabbitmq-server/pull/11112)
162+
163+
* Node startup time improvements. For some environments, nodes with very small on disk data sets
164+
now start about 25% quicker.
165+
166+
GitHub issue: [#10989](https://github.com/rabbitmq/rabbitmq-server/pull/10989)
167+
168+
* Quorum queues now support [priorities](https://www.rabbitmq.com/docs/next/quorum-queues#priorities). However,
169+
there are difference with how priorities work in classic queues.
170+
171+
GitHub issue: [#10637](https://github.com/rabbitmq/rabbitmq-server/pull/10637)
172+
173+
* Per-message metadata stored in the quorum queue Raft log now uses less disk space.
174+
175+
GitHub issue: [#8261](https://github.com/rabbitmq/rabbitmq-server/issues/8261)
176+
177+
* Single Active Consumer (SAC) implementation of quorum queues now respects consumer priorities.
178+
179+
GitHub issue: [#8261](https://github.com/rabbitmq/rabbitmq-server/issues/8261)
180+
181+
* `rabbitmq.conf` now supports [encrypted values](https://www.rabbitmq.com/docs/next/configure#configuration-encryption)
182+
with a prefix:
183+
184+
``` ini
185+
default_user = bunnies-444
186+
default_pass = encrypted:F/bjQkteQENB4rMUXFKdgsJEpYMXYLzBY/AmcYG83Tg8AOUwYP7Oa0Q33ooNEpK9
187+
```
188+
189+
GitHub issue: [#11989](https://github.com/rabbitmq/rabbitmq-server/pull/11989)
190+
191+
* All feature flags up to `3.13.0` have [graduated](https://www.rabbitmq.com/docs/feature-flags#graduation) and are now mandatory.
192+
193+
GitHub issue: [#11659](https://github.com/rabbitmq/rabbitmq-server/pull/11659)
194+
195+
* Quorum queues now use a default [redelivery limit](https://www.rabbitmq.com/docs/next/quorum-queues#poison-message-handling) of 20.
196+
197+
GitHub issue: [#11937](https://github.com/rabbitmq/rabbitmq-server/pull/11937)
198+
199+
* `queue_master_locator` queue setting has been deprecated in favor of `queue_leader_locator` used by quorum queues
200+
and streams.
201+
202+
GitHub issue: [#10702](https://github.com/rabbitmq/rabbitmq-server/issues/10702)
203+
204+
205+
### AMQP 1.0
206+
207+
#### Bug Fixes
208+
209+
* AMQP 0-9-1 to AMQP 1.0 string data type conversion improvements.
210+
211+
GitHub issue: [#11715](https://github.com/rabbitmq/rabbitmq-server/pull/11715)
212+
213+
#### Enhancements
214+
215+
* [AMQP 1.0 is now a core protocol](https://www.rabbitmq.com/blog/2024/08/05/native-amqp) that is always enabled.
216+
Its plugin is now a no-op that only exists to simplify upgrades.
217+
218+
GitHub issues: [#9022](https://github.com/rabbitmq/rabbitmq-server/pull/9022), [#10662](https://github.com/rabbitmq/rabbitmq-server/pull/10662)
219+
220+
* The AMQP 1.0 implementation is now significantly more efficient: its peak throughput is more than double than that of 3.13.x
221+
on some workloads.
222+
223+
GitHub issue: [#9022](https://github.com/rabbitmq/rabbitmq-server/pull/9022)
224+
225+
* AMQP 1.0 clients now can manage topologies (queues, exchanges, bindings).
226+
227+
GitHub issue: [#10559](https://github.com/rabbitmq/rabbitmq-server/pull/10559)
228+
229+
* AMQP 1.0 implementation now supports a new (v2) address format for referencing queues, exchanges, and so on.
230+
231+
GitHub issues: [#11604](https://github.com/rabbitmq/rabbitmq-server/pull/11604), [#11618](https://github.com/rabbitmq/rabbitmq-server/pull/11618)
232+
233+
* AMQP 1.0 implementation now supports consumer priorities.
234+
235+
GitHub issue: [#11705](https://github.com/rabbitmq/rabbitmq-server/pull/11705)
236+
237+
* Client-provided connection name will now be logged for AMQP 1.0 connections.
238+
239+
GitHub issue: [#11958](https://github.com/rabbitmq/rabbitmq-server/issues/11958)
240+
241+
242+
### Streams
243+
244+
#### Enhancements
245+
246+
* Stream filtering is now supported for AMQP 1.0 clients.
247+
248+
GitHub issue: [#10098](https://github.com/rabbitmq/rabbitmq-server/pull/10098)
249+
250+
251+
### Prometheus Plugin
252+
253+
#### Enhancements
254+
255+
* [Detailed memory breakdown](https://www.rabbitmq.com/docs/memory-use) metrics are now exposed via the Prometheus scraping endpoint.
256+
257+
GitHub issue: [#11743](https://github.com/rabbitmq/rabbitmq-server/issues/11743)
258+
259+
* New per-exchange and per-queue metrics.
260+
261+
Contributed by @LoisSotoLopez.
262+
263+
GitHub issue: [#11559](https://github.com/rabbitmq/rabbitmq-server/pull/11559)
264+
265+
* Shovel and Federation metrics are now available via two new plugins: `rabbitmq_shovel_prometheus` and `rabbitmq_federation_prometheus`.
266+
267+
Contributed by @SimonUnge.
268+
269+
GitHub issue: [#11942](https://github.com/rabbitmq/rabbitmq-server/pull/11942)
270+
271+
272+
### Shovel Plugin
273+
274+
#### Enhancements
275+
276+
* Shovels now can be configured to use pre-declared topologies. This is primarily useful in environments where
277+
schema definition comes from [definitions](https://www.rabbitmq.com/docs/definitions).
278+
279+
GitHub issue: [#10501](https://github.com/rabbitmq/rabbitmq-server/issues/10501)
280+
281+
282+
### Local Random Exchange Plugin
283+
284+
This is an initial release that includes [Local Random Exchange](https://www.rabbitmq.com/docs/next/local-random-exchange).
285+
286+
GitHub issues: [#8334](https://github.com/rabbitmq/rabbitmq-server/pull/8334), [#10091](https://github.com/rabbitmq/rabbitmq-server/pull/10091).
287+
288+
289+
### STOMP Plugin
290+
291+
#### Enhancements
292+
293+
* STOMP now supports consumer priorities.
294+
295+
GitHub issue: [#11947](https://github.com/rabbitmq/rabbitmq-server/pull/11947)
296+
96297

97298
### Dependency Changes
98299

99-
* Ra was [upgraded to `2.13.5`](https://github.com/rabbitmq/ra/releases)
300+
* Ra was [upgraded to `2.13.6`](https://github.com/rabbitmq/ra/releases)
100301
* Khepri was [upgraded to `0.14.0`](https://github.com/rabbitmq/khepri/releases)
101302
* Cuttlefish was [upgraded to `3.4.0`](https://github.com/Kyorai/cuttlefish/releases)
102303

0 commit comments

Comments
 (0)