289 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Markdown
		
	
	
	
		
		
			
		
	
	
			289 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Markdown
		
	
	
	
|  | ## 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 | ||
|  | 
 | ||
|  |  * [Quorum Queues](http://next.rabbitmq.com/quorum-queues.html) | ||
|  |  * Built-in [Prometheus support](http://next.rabbitmq.com/prometheus.html) with a set of Grafana dashboards to complement it | ||
|  |  * [Feature Flags](http://next.rabbitmq.com/feature-flags.html) | ||
|  |  * [Single Active Consumer](http://next.rabbitmq.com/consumers.html#single-active-consumer) | ||
|  |  * New authentication and authorisation [backend that uses OAuth 2.0 (JWT)](https://github.com/rabbitmq/rabbitmq-auth-backend-oauth2) tokens and scopes | ||
|  | 
 | ||
|  | A recorded webinar, [What's New in RabbitMQ 3.8](https://content.pivotal.io/webinars/may-23-what-s-new-in-rabbitmq-3-8-webinar), 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](https://github.com/rabbitmq/ra/). | ||
|  | 
 | ||
|  | ### Erlang/OTP Compatibility Notes
 | ||
|  | 
 | ||
|  | This release [**requires Erlang/OTP 21.3**](https://www.rabbitmq.com/which-erlang.html) or later. | ||
|  | `22.x` series is recommended. | ||
|  | 
 | ||
|  | [Provisioning Latest Erlang Releases](https://www.rabbitmq.com/which-erlang.html#erlang-repositories) 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](https://www.rabbitmq.com/upgrade.html) 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](https://www.rabbitmq.com/upgrade.html) for documentation on upgrades | ||
|  | and [RabbitMQ change log](https://www.rabbitmq.com/changelog.html) 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](https://groups.google.com/forum/#!forum/rabbitmq-users). | ||
|  | 
 | ||
|  | 
 | ||
|  | ## Changes
 | ||
|  | 
 | ||
|  | ### Core Server
 | ||
|  | 
 | ||
|  | #### Enhancements
 | ||
|  | 
 | ||
|  |  * [Quorum Queues](http://next.rabbitmq.com/quorum-queues.html) built on top of the [Raft consensus algorithm](https://raft.github.io/) for data safety, | ||
|  |    more predictable failure recovery, more efficient synchronisation of new and recovered followers, and parallel replication. | ||
|  | 
 | ||
|  |  * [Feature Flags](http://next.rabbitmq.com/feature-flags.html) allow for mixed-version clusters and safer rolling upgrades. | ||
|  | 
 | ||
|  |  * [Single Active Consumer](http://next.rabbitmq.com/consumers.html#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](https://github.com/rabbitmq/rabbitmq-server/issues/1904) | ||
|  | 
 | ||
|  |  * New metrics: [connection](https://www.rabbitmq.com/connections.html#monitoring) and [channel churn](https://www.rabbitmq.com/channels.html#monitoring). | ||
|  | 
 | ||
|  |    GitHub issue: [rabbitmq/rabbitmq-server#1723](https://github.com/rabbitmq/rabbitmq-server/issues/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](https://github.com/rabbitmq/rabbitmq-server/issues/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](https://github.com/rabbitmq/rabbitmq-server/issues/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](https://github.com/rabbitmq/rabbitmq-server/pull/1721) | ||
|  | 
 | ||
|  | #### Internal API Changes
 | ||
|  | 
 | ||
|  |  * [`amqqueue`](https://github.com/rabbitmq/rabbitmq-server/blob/master/src/amqqueue.erl) 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](https://github.com/rabbitmq/rabbitmq-server/issues/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](https://github.com/rabbitmq/rabbitmq-server/pull/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](https://github.com/rabbitmq/rabbitmq-server/pull/2072) | ||
|  | 
 | ||
|  |  * Maximum message size is now configurable. The default was reduced to 128 MiB.e | ||
|  | 
 | ||
|  |    GitHub issue: [rabbitmq/rabbitmq-server#1812](https://github.com/rabbitmq/rabbitmq-server/pull/1812) | ||
|  | 
 | ||
|  | #### Bug Fixes
 | ||
|  | 
 | ||
|  | Most bug fixes in this release previously shipped in [`3.7.x` release series](https://rabbitmq.com/changelog.html). | ||
|  | The list below contains community contributions and most important issues that were not backported to `3.7.x` releases. | ||
|  | 
 | ||
|  |  * Queue index consistency and safety improvements. | ||
|  | 
 | ||
|  |    Contributed by @tomyouyou. | ||
|  | 
 | ||
|  |    GitHub issues: [rabbitmq/rabbitmq-server#2092](https://github.com/rabbitmq/rabbitmq-server/pull/2092), [rabbitmq/rabbitmq-server#2096](https://github.com/rabbitmq/rabbitmq-server/pull/2096), [rabbitmq/rabbitmq-server#2100](https://github.com/rabbitmq/rabbitmq-server/pull/2100). | ||
|  | 
 | ||
|  | 
 | ||
|  | ### CLI Tools
 | ||
|  | 
 | ||
|  | #### Enhancements
 | ||
|  | 
 | ||
|  |  * More user-friendly `rabbitmq-diagnostics status` output. | ||
|  | 
 | ||
|  |    GitHub issue: [rabbitmq/rabbitmq-cli#340](https://github.com/rabbitmq/rabbitmq-cli/issues/340) | ||
|  | 
 | ||
|  |  * New `help` command. | ||
|  | 
 | ||
|  |    GitHub issue: [rabbitmq/rabbitmq-cli#316](https://github.com/rabbitmq/rabbitmq-cli/pull/316) | ||
|  | 
 | ||
|  |  * A new set of fine-grained [health check](https://www.rabbitmq.com/monitoring.html#health-checks) commands. | ||
|  | 
 | ||
|  |    GitHub issue: [rabbitmq/rabbitmq-cli#292](https://github.com/rabbitmq/rabbitmq-cli/issues/292) | ||
|  | 
 | ||
|  |  * New tool, `rabbitmq-queues`, with commands that display Raft state metrics and manage nodes that | ||
|  |    host quorum queue replicas. | ||
|  | 
 | ||
|  |    GitHub issues: [rabbitmq/rabbitmq-cli#287](https://github.com/rabbitmq/rabbitmq-cli/issues/287), [rabbitmq/rabbitmq-cli#286](https://github.com/rabbitmq/rabbitmq-cli/issues/286) | ||
|  | 
 | ||
|  |  * Feature flag status reporting. | ||
|  | 
 | ||
|  |    GitHub issue: [rabbitmq/rabbitmq-cli#346](https://github.com/rabbitmq/rabbitmq-cli/issues/346) | ||
|  | 
 | ||
|  | #### Usability
 | ||
|  | 
 | ||
|  |  * `rabbitmq-diagnostics cipher_suites` now uses OpenSSL cipher suite format by default. | ||
|  | 
 | ||
|  |    GitHub issue: [rabbitmq/rabbitmq-cli#267](https://github.com/rabbitmq/rabbitmq-cli/issues/267) | ||
|  | 
 | ||
|  | 
 | ||
|  | ### Management Plugin
 | ||
|  | 
 | ||
|  | #### Enhancements
 | ||
|  | 
 | ||
|  |  * Metric collection and visualisation in management UI now can be disabled in favor of built-in | ||
|  |    Prometheus support and Grafana dashboard from Team RabbitMQ. | ||
|  | 
 | ||
|  |    GitHub issue: [rabbitmq/rabbitmq-management#707](https://github.com/rabbitmq/rabbitmq-management/pull/707) | ||
|  | 
 | ||
|  |  * Feature flag management interface. | ||
|  | 
 | ||
|  |    [rabbitmq/rabbitmq-management#648](https://github.com/rabbitmq/rabbitmq-management/pull/648) | ||
|  | 
 | ||
|  |  * Quorum Queue support. | ||
|  | 
 | ||
|  |  * Single Active Consumer support. | ||
|  | 
 | ||
|  |    GitHub issue: [rabbitmq/rabbitmq-management#650](https://github.com/rabbitmq/rabbitmq-management/pull/650) | ||
|  | 
 | ||
|  |  * Support for more TLS options. | ||
|  | 
 | ||
|  |    GitHub issue: [rabbitmq/rabbitmq-management#644](https://github.com/rabbitmq/rabbitmq-management/pull/644) | ||
|  | 
 | ||
|  |  * OAuth 2.0 Single Sign On support for [UAA](https://docs.cloudfoundry.org/concepts/architecture/uaa.html) | ||
|  | 
 | ||
|  |    GitHub issue: [rabbitmq/rabbitmq-management#722](https://github.com/rabbitmq/rabbitmq-management/pull/722) | ||
|  | 
 | ||
|  |  * Username and password-based Basic HTTP Auth authentication for API operations now can be disabled | ||
|  |    in favor of OAuth 2.0 Single Sign On via [UAA](https://docs.cloudfoundry.org/concepts/architecture/uaa.html). | ||
|  | 
 | ||
|  |    GitHub issue: [rabbitmq/rabbitmq-management#724](https://github.com/rabbitmq/rabbitmq-management/pull/724) | ||
|  | 
 | ||
|  | 
 | ||
|  | ### Shovel Plugin
 | ||
|  | 
 | ||
|  | #### Bug Fixes
 | ||
|  | 
 | ||
|  | Most bug fixes in this release previously shipped in [`3.7.x` release series](https://rabbitmq.com/changelog.html). | ||
|  | 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](https://github.com/rabbitmq/rabbitmq-erlang-client/issues/123) | ||
|  | 
 | ||
|  | 
 | ||
|  | ### Federation Plugin
 | ||
|  | 
 | ||
|  | #### Bug Fixes
 | ||
|  | 
 | ||
|  | Most bug fixes in this release previously shipped in [`3.7.x` release series](https://rabbitmq.com/changelog.html). | ||
|  | 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](https://github.com/rabbitmq/rabbitmq-erlang-client/issues/123) | ||
|  | 
 | ||
|  | 
 | ||
|  | ### JWT and OAuth 2.0 Plugin
 | ||
|  | 
 | ||
|  | Initial release. | ||
|  | 
 | ||
|  | GitHub repository: [rabbitmq/rabbitmq-auth-backend-oauth2](https://github.com/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](https://github.com/rabbitmq/rabbitmq-mqtt/issues/91) | ||
|  | 
 | ||
|  | 
 | ||
|  | ### Web STOMP Plugin
 | ||
|  | 
 | ||
|  | #### Bug Fixes
 | ||
|  | 
 | ||
|  | Most bug fixes in this release previously shipped in [`3.7.x` release series](https://rabbitmq.com/changelog.html). | ||
|  | The list below contains most prominent fixes. | ||
|  | 
 | ||
|  |  * Maximum concurrent client connection limit now defaults to "infinity" (so, there is no limit). | ||
|  | 
 | ||
|  |    GitHub issue: [rabbitmq/rabbitmq-web-stomp#113](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/113) | ||
|  | 
 | ||
|  | 
 | ||
|  | ### Web MQTT Plugin
 | ||
|  | 
 | ||
|  | #### Bug Fixes
 | ||
|  | 
 | ||
|  | Most bug fixes in this release previously shipped in [`3.7.x` release series](https://rabbitmq.com/changelog.html). | ||
|  | The list below contains most prominent fixes. | ||
|  | 
 | ||
|  |  * Maximum concurrent client connection limit now defaults to "infinity" (so, there is no limit). | ||
|  | 
 | ||
|  |    GitHub issue: [rabbitmq/rabbitmq-web-mqtt#28](https://github.com/rabbitmq/rabbitmq-web-mqtt/issues/28) | ||
|  | 
 | ||
|  | 
 | ||
|  | ### RabbitMQ Erlang Client
 | ||
|  | 
 | ||
|  | #### Bug Fixes
 | ||
|  | 
 | ||
|  | Most bug fixes in this release previously shipped in [`3.7.x` release series](https://rabbitmq.com/changelog.html). | ||
|  | 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](https://github.com/rabbitmq/rabbitmq-erlang-client/issues/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`. |