Skip to content

RabbitMQ 3.8.0

Compare
Choose a tag to compare
@pivotal-rabbitmq-ci pivotal-rabbitmq-ci released this 01 Oct 10:05

RabbitMQ 3.8.0

RabbitMQ 3.8.0 is a feature release. It contains several major improvements in areas of
data safety, replication, observability, and ease of upgrades. Some highlight features are

A recorded webinar, What's New in RabbitMQ 3.8, covers some of the highlights in this release.

Several features in this release are backed by a new Raft implementation for Erlang and Elixir,
Ra.

Erlang/OTP Compatibility Notes

This release requires Erlang 21.3 or later.

Provisioning Latest Erlang Releases explains
what package repositories and tools can be used to provision latest patch versions of Erlang 21.3.x and 22.x.

Rolling Upgrades to 3.8

RabbitMQ 3.8.0 nodes can run alongside 3.7.18 or later 3.7.x nodes.
No 3.8.0-specific features would be available in a mixed version cluster. Mixed versions are meant
to simplify rolling upgrades and not meant to be running for long periods of time.

See the Upgrading guide for documentation on upgrades.

Compatibility Notes

Upgrading to Erlang 21.x or Later Versions

When upgrading to this release and upgrading Erlang to 21.x or later at the same time, extra care has to be taken.
Since CLI tools from RabbitMQ releases older than 3.7.7 will fail on Erlang 21 or later,
RabbitMQ must be upgraded before Erlang.

Upgrade Doc Guides and Change Log

See the Upgrading guide for documentation on upgrades
and RabbitMQ change log for release notes of other releases.

Client Library Compatibility

Client libraries that were compatible with RabbitMQ 3.7.x will be compatible with 3.8.0.

Getting Help

Any questions about this release, upgrades or RabbitMQ in general are welcome on the
RabbitMQ mailing list.

Changes

Core Server

Enhancements

  • Quorum Queues built on top of the Raft consensus algorithm for data safety,
    more predictable failure recovery, more efficient synchronisation of new and recovered followers, and parallel replication.

  • Feature Flags allow for mixed-version clusters and safer rolling upgrades.

  • Single Active Consumer makes it possible
    to run a set of consumers for redundancy while ensuring that only one consumer is getting deliveries.

  • New metric: dropped unroutable messages. Spotting faulty publishers and routing topology issues is now easier.

    GitHub issue: rabbitmq/rabbitmq-server#1904

  • New metrics: connection and channel churn.

    GitHub issue: rabbitmq/rabbitmq-server#1723

  • Quorum queues support redelivery tracking, which can be used by consumers to protect themselves from
    poison message redeliveries.

    GitHub issue: rabbitmq/rabbitmq-server#502

  • New queue overflow behaviour: reject-publish-dlx. It is identical to reject-publish
    but also dead letters rejected messages.

    GitHub issue: rabbitmq/rabbitmq-server#1443

  • Default bindings are now explicit instead of being rows in the internal data store. That means
    that high queue churn results in significantly less binding churn, reducing lock contention on
    schema database tables, and peak schema operation latencies with it.

    GitHub issue: rabbitmq/rabbitmq-server#1721

Internal API Changes

  • amqqueue is a new public API module
    that should be used to access queue state instead of using queue state records directly. This allows the record
    to evolve a lot more rapidly with fewer or no code changes in the plugins that access queue state.

  • authn and authz functions now have access to additional (e.g. protocol-specific) context information.

    GitHub issue: rabbitmq/rabbitmq-server#1767

  • Backing queue interface now exposes a function for message deduplication. Plugins now can track duplicate messages
    in a way that makes it possible to negatively confirm duplicates back to the publisher.

    Contributed by Matteo Cafasso.

    GitHub issue: rabbitmq/rabbitmq-server#1774.

Usability

  • New style configuration format is now more forgiving: it will ignore lines that only contain
    whitespace and tab characters, as well as leading and trailing whitespace.

    GitHub issue: rabbitmq/rabbitmq-server#2072

  • Maximum message size is now configurable. The default was reduced to 128 MiB.e

    GitHub issue: rabbitmq/rabbitmq-server#1812

Bug Fixes

Most bug fixes in this release previously shipped in 3.7.x release series.
The list below contains community contributions and most important issues that were not backported to 3.7.x releases.

CLI Tools

Enhancements

Usability

  • rabbitmq-diagnostics cipher_suites now uses OpenSSL cipher suite format by default.

    GitHub issue: rabbitmq/rabbitmq-cli#267

Management Plugin

Enhancements

Shovel Plugin

Bug Fixes

Most bug fixes in this release previously shipped in 3.7.x release series.
The list below contains most prominent fixes.

  • Sensitive values in Shovel connection state (namely, the connection credentials) are now stored in
    encrypted form. This avoids unintentional credential logging by the runtime (exception logger)
    at the cost of making troubleshooting authentication failures harder.

    GitHub issue: rabbitmq-erlang-client#123

Federation Plugin

Bug Fixes

Most bug fixes in this release previously shipped in 3.7.x release series.
The list below contains most prominent fixes.

  • Sensitive values in federation link state (namely, the connection credentials) are now stored in
    encrypted form. This avoids unintentional credential logging by the runtime (exception logger)
    at the cost of making troubleshooting authentication failures harder.

    GitHub issue: rabbitmq-erlang-client#123

JWT and OAuth 2.0 Plugin

Initial release.

GitHub repository: rabbitmq/rabbitmq-auth-backend-oauth2

MQTT Plugin

Enhancements

  • Client ID tracking is now cluster-wide (state is replicated across all nodes). A majority of nodes is required
    for client connections to be accepted. This is a consequence of the neew consistency-oriented design.

    GitHub issue: rabbitmq/rabbitmq-mqtt#91

Web STOMP Plugin

Bug Fixes

Most bug fixes in this release previously shipped in 3.7.x release series.
The list below contains most prominent fixes.

Web MQTT Plugin

Bug Fixes

Most bug fixes in this release previously shipped in 3.7.x release series.
The list below contains most prominent fixes.

RabbitMQ Erlang Client

Bug Fixes

Most bug fixes in this release previously shipped in 3.7.x release series.
The list below contains most prominent fixes.

  • Sensitive values in connection state (namely, the connection credentials) are now stored in
    encrypted form. This avoids unintentional credential logging by the runtime (exception logger)
    at the cost of making troubleshooting authentication failures harder.

    GitHub issue: rabbitmq-erlang-client#123

Source code archives

Warning: The source code archive provided by GitHub only contains the source of the broker,
not the plugins or the client libraries. Please download the archive named rabbitmq-server-3.8.0.tar.xz.