Skip to content

RabbitMQ 3.7.0

Compare
Choose a tag to compare
@pivotal-rabbitmq-ci pivotal-rabbitmq-ci released this 29 Nov 21:42

This release introduces new features, changes to RabbitMQ distribution (e.g. what plugins ship
with it), and bug fixes. It also includes all the changes from the 3.6.x release series unless stated otherwise.

Documentation for this release is available at the RabbitMQ website.

Breaking Changes

Erlang/OTP 20 Support

Erlang/OTP 20 has breaking changes that affected RabbitMQ.

3.7.0 supports OTP 20, including upgrades of existing installations to OTP 20. This required changes to the core and multiple plugins that ship with RabbitMQ.

GitHub issues: rabbitmq-server#1243, rabbitmq-server#1250, rabbitmq-server#1268,
rabbitmq-server#1272, rabbitmq-federation#58, rabbitmq-management-agent#47,
rabbitmq-management#415, rabbitmq-stomp#115

Core Server

Enhancements

Bug Fixes

  • Mirrored queue could terminate if a policy is re-applied concurrently after promotion

    GitHub issue: rabbitmq-server#803

  • Old incarnations of queue mirrors are stopped before new ones start

    GitHub issue: rabbitmq-server#863

  • Channel interceptors are enabled/disabled together with plugins

    GitHub issue: rabbitmq-server#559

CLI Tools

CLI tools were significatnly redesigned,
now can be extended from plugins and support command
aliases (à la Git). There's also a new tool, rabbitmq-diagnostics, and several new commands available.

GitHub issues: rabbitmq-server#577, rabbitmq-cli#38, rabbitmq-server#1085,
rabbitmq-cli#10, rabbitmq-cli#178, rabbitmq-cli#180.

Enhancements

  • New CLI command for closing connections in bulk (e.g. a specific vhost).

    GitHub issue: rabbitmq-server#849

  • New CLI command for detecting potentially stuck
    processes (previously invoked as rabbit_diagnostics:maybe_stuck/0 via rabbitmqctl eval).

    GitHub issue: rabbitmq-cli#144

  • New CLI command that lists non-AMQP connections (e.g. MQTT).

    GitHub issue: rabbitmq-cli#121

  • New CLI command that outputs effective Erlang cookie hash.

    GitHub issue: rabbitmq-cli#151

  • rabbitmq-plugins list will now only recognise Erlang applications that depend on
    rabbit as plugins. Plugins that lacks the dependency will still function and
    can be enabled or disabled but won't be listed.

    GitHub issue: rabbitmq-server#1124

Management plugin

Enhancements

  • Statistics database is now distributed across the cluster: each nodes stores its own stats.

    GitHub issue: rabbitmq-management#236

  • Migration to Cowboy REST

    RabbitMQ management plugin as well as its extensions (e.g. those of
    Federation and Shovel, rabbitmq-top) now uses Cowboy REST
    instead of Webmachine. Cowboy is a state-of-the-art open source Erlang HTTP 1.1 server and REST micro framework
    that is also used in the plugins that provide WebSocket support.

    The change is largely invisible to management UI and HTTP API
    clients but there are minor changes that can affect test suites: for example,
    POST and PUT responses now use 201 Created instead of 204 No Content.

    Plugins that extend management UI need to be ported to Cowboy REST and Cowboy 2.

    GitHub issue: rabbitmq-management#63

  • Users tagged with administrator now implicitly have access to most operations in all vhosts,
    including those they don't have explicit permissions for.

    GitHub issue: rabbitmq-management#461

  • User that creates a vhost is automatically granted full permissions in it. This is a usability
    improvement to the management UI. Note that this assumes that a user that has the permissions to create
    vhosts also has the permission to grant themselves permissions to any vhost, so this changes nothing in
    terms of security.

    GitHub issue: rabbitmq-management#445

  • New HTTP API endpoint allows for bulk deletion of users.

    GitHub issue: rabbitmq-management#448

  • Node endpoint now returns more information about memory use breakdown.
    This is breaking change.

    GitHub issue: rabbitmq-management#499

  • Report more TLS-related values via HTTP API

    The HTTP API now reports all SSL/TLS options available for the RabbitMQ server as well as for the management plugin.

    GitHub issue: rabbitmq-management#163

  • Topic authorization permission management.

    GitHub issue: rabbitmq-management#405

  • Dual IP Stack Support

    Management plugin now can be configured to use IPv6 or both IPv6 and IPv4.

    GitHub issue: rabbitmq-management#64

  • "Get messages" in the UI now offers more requeueing options. This is a breaking change for HTTP API
    clients as the list of accepted ackmode field values has changed.

    GitHub issue: rabbitmq-management#68

Java client

These release notes are for the 4.0 release. Please see Java client release notes
for information about later releases.

Enhancements

  • Bump default TLS version to v1.2 with a fallback for older JDKs

    The Java client now attempts to use TLS v1.2 by default (which many RabbitMQ servers prefer due to vulnerabilities in TLS v1)
    but falls back to TLS v1 for older JDKs such as JDK 6.

    GitHub issue: rabbitmq-java-client#139

  • Begin recovery after all shutdown listeners have been given a chance to run

    GitHub issue: rabbitmq-java-client#135

  • com.rabbitmq.client.Connection and com.rabbitmq.client.Channel now implement java.io.Closeable

    GitHub issue: rabbitmq-java-client#131

.NET Client

These release notes are for the 4.0 release. Please see .NET client release notes
for information about later releases.

Enhancements

MQTT plugin

Enhancements

Shovel Plugin

Enhancements

  • Support for AMQP 1.0 and a foundation for more protocols supported in the future.
    This means cross-protocol shoveling (AMQP 0-9-1 to AMQP 1.0 or the other way around) is now
    supported. Erlang client for AMQP 1.0 is now also available
    as a standalone project.

    GitHub issue: rabbitmq-shovel#26

  • Message timestamping.

    Shovel now adds an extra header that contains the timestamp
    indicating when message was shovelled.

    GitHub issue: rabbitmq-shovel#2

Federation Plugin

Enhancements

Bug Fixes

  • Internal exchanges and queues are now cleaned up if the policy goes out of effect or the plugin is disabled.

    GitHub issue: rabbitmq-federation#63

Event Exchange Plugin

Enhancements

AMQP 1.0 Plugin

This release introduces a new sub-project, an Erlang client for AMQP 1.0, and AMQP 1.0 support
in the Shovel plugin.

Bug Fixes

LDAP Authn/Authz Backend

Enhancements

Delayed Message Exchange Plugin

Enhancements

Erlang Client

Bug Fixes

AMQP 0-9-1 Authn/Authz Backend

Upgrading

To upgrade a non-clustered RabbitMQ simply install the new version. All configuration and persistent message data are retained.
When upgrading using definitions export/import from versions earlier than 3.6.0, see http://rabbitmq.com/passwords.html.

To upgrade a RabbitMQ cluster, follow the instructions in RabbitMQ documentation.

Source code archives

Warning: The source code archive provided by GitHub only contains the source of the broker,
not the plugins, CLI tools or other sub-projects. Please download the archive named rabbitmq-server-<version>.tar.xz from this release
page.