Skip to content

Commit e7e11ae

Browse files
4.1.0 release notes: use the standard format (same as 4.0.x, 3.13.x, and prior series)
1 parent 8d4dbb0 commit e7e11ae

File tree

1 file changed

+166
-46
lines changed

1 file changed

+166
-46
lines changed

release-notes/4.1.0.md

Lines changed: 166 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -2,75 +2,195 @@
22

33
RabbitMQ 4.1.0-beta.2 is a preview release (in development) of a new feature release.
44

5+
See Compatibility Notes below to learn about **breaking or potentially breaking changes** in this release.
6+
7+
58
## Highlights
69

7-
### AMQP 1.0 Filter Expressions
10+
Some key improvements in this release are listed below.
11+
12+
### Initial Support for AMQP 1.0 Filter Expressions
13+
14+
Support for the `properties` and `appliation-properties` filters of [AMQP Filter Expressions Version 1.0 Working Draft 09](https://groups.oasis-open.org/higherlogic/ws/public/document?document_id=66227).
15+
16+
17+
### Feature Flags Quality of Life Improvements
18+
19+
Graduated (mandatory) [feature flags](https://www.rabbitmq.com/docs/feature-flags) several minors ago has proven that they could use some user experience improvements.
20+
For example, certain required feature flags will now be enabled on node boot when all nodes in the cluster support them.
21+
22+
See core server changes below as well as the [GitHub project dedicated to feature flags improvements](https://github.com/orgs/rabbitmq/projects/4/views/1)
23+
for the complete list of related changes.
24+
25+
26+
## Breaking Changes and Compatibility Notes
27+
28+
### MQTT
29+
30+
* The default MQTT [Maximum Packet Size](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901086) changed from 256 MiB to 16 MiB.
31+
32+
This default can be overridden by [configuring](https://www.rabbitmq.com/docs/configure#config-file) `mqtt.max_packet_size_authenticated`.
33+
Note that this value must not be greater than `max_message_size` (which also defaults to 16 MiB).
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+
## Release Artifacts
45+
46+
TBD
47+
48+
49+
## Upgrading to 4.1.0
50+
51+
### Documentation guides on upgrades
52+
53+
See the [Upgrading guide](https://www.rabbitmq.com/docs/upgrade) for documentation on upgrades and [GitHub releases](https://github.com/rabbitmq/rabbitmq-server/releases)
54+
for release notes of individual releases.
55+
56+
This release series only supports upgrades from `4.0.x`.
57+
58+
[Blue/Green Deployment](https://www.rabbitmq.com/docs/blue-green-upgrade)-style upgrades are avaialble for migrations from 3.12.x and 3.13.x series
59+
to `4.1.x`.
60+
61+
### Required Feature Flags
62+
63+
None/TBD.
64+
65+
### Mixed version cluster compatibility
66+
67+
RabbitMQ 4.1.0 nodes can run alongside `4.0.x` nodes. `4.1.x`-specific features can only be made available when all nodes in the cluster
68+
upgrade to 4.0.0 or a later patch release in the new series.
69+
70+
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.
71+
Once all nodes are upgraded to 4.1.0, these irregularities will go away.
72+
73+
Mixed version clusters are a mechanism that allows rolling upgrade and are not meant to be run for extended
74+
periods of time (no more than a few hours).
75+
76+
### Recommended Post-upgrade Procedures
77+
78+
TBD
79+
80+
81+
82+
## Changes Worth Mentioning
83+
84+
This section is incomplete and will be expanded as 4.1 approaches its release candidate stage.
85+
86+
### Core Server
87+
88+
#### Enhancements
89+
90+
* Feature flag quality of live improvements.
91+
92+
Certain required feature flags will now be automatically required on node boot
93+
and do not have to be explicitly enabled before an upgrade.
94+
This does not apply to all feature flags, however.
95+
96+
GitHub project: [#4](https://github.com/orgs/rabbitmq/projects/4/views/1).
97+
98+
GitHub issues: [#12466](https://github.com/rabbitmq/rabbitmq-server/pull/12466), [#12444](https://github.com/rabbitmq/rabbitmq-server/pull/12444),
99+
[#12447](https://github.com/rabbitmq/rabbitmq-server/pull/12447)
100+
101+
* `properties` and `appliation-properties` filters of [AMQP Filter Expressions Version 1.0 Working Draft 09](https://groups.oasis-open.org/higherlogic/ws/public/document?document_id=66227)
102+
when consuming from a stream via AMQP 1.0. String prefix and suffix matching is also supported.
103+
104+
This feature adds the ability to RabbitMQ to have multiple concurrent clients each consuming only a subset of messages while maintaining message order.
105+
It also reduces network traffic between RabbitMQ and clients by only dispatching those messages that the clients are actually interested in.
106+
107+
GitHub issue: [#12415](https://github.com/rabbitmq/rabbitmq-server/pull/12415)
108+
109+
* AMQP 1.0 connections that use OAuth 2.0 now can renew their JWT tokens
110+
This allows clients to set a new token proactively before the current one [expires](/docs/oauth2#token-expiration), ensuring uninterrupted connectivity.
111+
If a client does not set a new token before the existing one expires, RabbitMQ will automatically close the AMQP 1.0 connection.
112+
113+
GitHub issue: [#12599](https://github.com/rabbitmq/rabbitmq-server/pull/12599)
114+
115+
* Support for Multiple Routing Keys in AMQP 1.0 via `x-cc` Message Annotation.
116+
117+
AMQP 1.0 publishers now can set multiple routing keys by using the `x-cc` message annotation.
118+
This annotation allows publishers to specify a [list](https://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-types-v1.0-os.html#type-list)
119+
of routing keys ([strings](https://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-types-v1.0-os.html#type-string)) for more flexible message distribution,
120+
similar to the [CC](https://www.rabbitmq.com/docs/sender-selected) header in AMQP 0.9.1.
121+
122+
GitHub issue: [#12559](https://github.com/rabbitmq/rabbitmq-server/pull/12559)
123+
124+
125+
### MQTT Plugin
126+
127+
#### Enhancements
128+
129+
* The default MQTT [Maximum Packet Size](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901086) changed from 256 MiB to 16 MiB.
130+
131+
This default can be overridden by [configuring](https://www.rabbitmq.com/docs/configure#config-file) `mqtt.max_packet_size_authenticated`.
132+
Note that this value must not be greater than `max_message_size` (which also defaults to 16 MiB).
133+
134+
135+
### Prometheus Plugin
136+
137+
#### Enhancements
138+
139+
* RabbitMQ nodes now provide a Prometheus histogram for message sizes published by applications.
8140

9-
[PR #12415](https://github.com/rabbitmq/rabbitmq-server/pull/12415) implements `properties` and `appliation-properties` filters of [AMQP Filter Expressions Version 1.0 Working Draft 09](https://groups.oasis-open.org/higherlogic/ws/public/document?document_id=66227) when consuming from a stream via AMQP 1.0.
10-
String prefix and suffix matching is also supported.
141+
This feature allows operators to gain insights into the message sizes being published to RabbitMQ,
142+
such as average message size, number of messages per pre-defined bucket (which can both be computed accurately), and percentiles (which will be approximated).
143+
Each metric is labelled by protocol (AMQP 1.0, AMQP 0.9.1, MQTT 5.0, MQTT 3.1.1, and MQTT 3.1).
11144

12-
This feature:
13-
* adds the ability to RabbitMQ to have multiple concurrent clients each consuming only a subset of messages while maintaining message order, and
14-
* reduces network traffic between RabbitMQ and clients by only dispatching those messages that the clients are actually interested in.
145+
GitHub issue: [#12342](https://github.com/rabbitmq/rabbitmq-server/pull/12342)
15146

16-
### Support for Multiple Routing Keys in AMQP 1.0 via `x-cc` Message Annotation
17-
[PR #12559](https://github.com/rabbitmq/rabbitmq-server/pull/12559) enables AMQP 1.0 publishers to set multiple routing keys by using the `x-cc` message annotation.
18-
This annotation allows publishers to specify a [list](https://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-types-v1.0-os.html#type-list) of routing keys ([strings](https://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-types-v1.0-os.html#type-string)) for more flexible message distribution, similar to the [CC](https://www.rabbitmq.com/docs/sender-selected) header in AMQP 0.9.1.
19147

20-
### OAuth 2.0 Token Renewal on AMQP 1.0 Connections
21-
[PR #12599](https://github.com/rabbitmq/rabbitmq-server/pull/12599) introduces support for OAuth 2.0 token renewal on AMQP 1.0 connections.
22-
This feature allows clients to set a new token proactively before the current one [expires](/docs/oauth2#token-expiration), ensuring uninterrupted connectivity.
23-
If a client does not set a new token before the existing one expires, RabbitMQ will automatically close the AMQP 1.0 connection.
148+
### Management UI
24149

25-
### Metrics for AMQP 1.0 Connections
26-
[PR #12638](https://github.com/rabbitmq/rabbitmq-server/pull/12638) exposes the following AMQP 1.0 connection metrics in the RabbitMQ Management UI and the [/metrics/per-object](https://www.rabbitmq.com/docs/prometheus#per-object-endpoint) Prometheus endpoint:
27-
* Bytes received and sent
28-
* Reductions
29-
* Garbage collections
30-
* Number of channels/sessions
150+
#### Enhancements
31151

32-
These metrics have already been emitted for AMQP 0.9.1 connections prior to RabbitMQ 4.1.
152+
* Connection pages now display detailed AMQP 1.0 session and link information:
33153

34-
### AMQP 1.0 Sessions and Links in the Management UI
35-
[PR #12670](https://github.com/rabbitmq/rabbitmq-server/pull/12670) displays detailed AMQP 1.0 session and link information on the Connection page of the Management UI including:
36-
* Link names
37-
* Link target and source addresses
38-
* Link flow control state
39-
* Session flow control state
40-
* Number of unconfirmed and unacknowledged messages
154+
1. Link names
155+
2. Link target and source addresses
156+
3. Link flow control state
157+
4. Session flow control state
158+
5. Number of unconfirmed and unacknowledged messages
41159

42-
### Support publishing AMQP 1.0 messages to the Event Exchange
43-
[PR #12714](https://github.com/rabbitmq/rabbitmq-server/pull/12714) allows the `rabbitmq_event_exchange` plugin to be configured to internally publish AMQP 1.0 instead of AMQP 0.9.1 messages to the `amq.rabbitmq.event` topic exchange.
160+
GitHub issue: [#12670](https://github.com/rabbitmq/rabbitmq-server/pull/12670)
44161

45-
This feature allows AMQP 1.0 consumers to receive event properties containing complex types such as [lists](https://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-types-v1.0-os.html#type-list) or [maps](https://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-types-v1.0-os.html#type-map), for example queue arguments for the `queue.created` event or client provided properties for the `connection.created` event.
162+
* The management UI now shows if a feature flag has a migration function (in other words, it may take time to be enabled),
163+
if it is experimental and whether it is supported or not. To enable an experimental feature flag,
164+
a user must to tick checkboxes to confirm they know what they are doing.
46165

47-
### Prometheus histogram for message sizes
166+
GitHub issue: [#12643](https://github.com/rabbitmq/rabbitmq-server/pull/12643)
48167

49-
[PR #12342](https://github.com/rabbitmq/rabbitmq-server/pull/12342) exposes a Prometheus histogram for message sizes received by RabbitMQ.
168+
* Feature flags are now enabled using asynchronous requests in the management UI.
169+
This means that feature flags that perform data migrations (which can take some time)
170+
won't block the browser tab.
50171

51-
This feature allows operators to gain insights into the message sizes being published to RabbitMQ, such as average message size, number of messages per pre-defined bucket (which can both be computed accurately), and percentiles (which will be approximated).
52-
Each metric is labelled by protocol (AMQP 1.0, AMQP 0.9.1, MQTT 5.0, MQTT 3.1.1, and MQTT 3.1).
172+
GitHub issue: [#12643](https://github.com/rabbitmq/rabbitmq-server/pull/12643)
53173

54-
### Feature flags quality of life improvements
55174

56-
The introduction of required feature flags several minor versions ago showed the poor user experience around them. Therefore, several improvements were made to the subsystem and the management UI to improve the general usage:
175+
### Event Exchange Plugin
57176

58-
* Required feature flags have now a soft/hard requirement attribute.
177+
#### Enhancements
59178

60-
Hard required feature flags are the ones already in use: the user has to enable a feature flag before upgrading to a version that requires it, otherwise the node will refuse to start.
179+
* The `rabbitmq_event_exchange` plugin now can be configured to internally publish AMQP 1.0 instead of AMQP 0.9.1 messages to the `amq.rabbitmq.event` topic exchange.
61180

62-
Soft required feature flags are the new kind: when the user upgrades to a version that requires a feature flag that is not enabled yet, the feature flag will be enabled automatically during startup. To achieve that, some compatibility code is kept with a soft required feature flag, unlike a hard required one. In the future, RabbitMQ will use soft required feature flags as much as possible. This is only a measure to help users that did not follow recommendations. The recommendations is still that feature flags should always be enabled at the best time for the workload.
181+
This allows AMQP 1.0 consumers to receive event properties containing complex types such as [lists](https://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-types-v1.0-os.html#type-list)
182+
or [maps](https://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-types-v1.0-os.html#type-map), for example queue arguments for the `queue.created`
183+
event or client provided properties for the `connection.created` event.
63184

64-
See [#12466](https://github.com/rabbitmq/rabbitmq-server/pull/12466).
185+
GitHub issue: [#12714](https://github.com/rabbitmq/rabbitmq-server/pull/12714)
65186

66-
* The management UI now shows if a feature flag has a migration function (in other words, it may take time to be enabled), if it is experimental and whether it is supported or not. To enable an experimental feature flag, a user has to tick checkboxes to confirm they know what they are doing. The feature flags UI has other fixes under the hood; the most important one is that a feature flag that takes time to be enabled will not freeze the browser tab anymore (the HTTP request was synchronous and executed from the browser main thread before). See [#12643](https://github.com/rabbitmq/rabbitmq-server/pull/12643).
67187

68-
* Required feature flags are hidden from the CLI and the management UI because there is nothing a user can do about them. See [#12447](https://github.com/rabbitmq/rabbitmq-server/pull/12447).
188+
### Dependency Changes
69189

70-
* Logging was made less verbose. See [#12444](https://github.com/rabbitmq/rabbitmq-server/pull/12444).
190+
TBD
71191

72-
See the [full GitHub project](https://github.com/orgs/rabbitmq/projects/4/views/1) for the complete list of improvements and fixes.
73192

74-
## Potential incompatibilities
193+
## Source Code Archives
75194

76-
* The default MQTT [Maximum Packet Size](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901086) changed from 256 MiB to 16 MiB. This default can be overridden by [configuring](https://www.rabbitmq.com/docs/configure#config-file) `mqtt.max_packet_size_authenticated`. Note that this value must not be greater than `max_message_size` (which also defaults to 16 MiB).
195+
To obtain source code of the entire distribution, please download the archive named `rabbitmq-server-4.1.0.tar.xz`
196+
instead of the source tarball produced by GitHub.

0 commit comments

Comments
 (0)