Menu

RabbitMQ Erlang Version Requirements

Introduction

This guide covers Erlang/OTP requirements, recommendations, caveats and commonly used installation sources.

Unsupported Versions

Erlang/OTP versions older than 19.3 are not supported by currently maintained RabbitMQ release series.

RabbitMQ versions prior to 3.7.7 do not support Erlang/OTP 21 or newer.

Requirements by Release Series

RabbitMQ Minimum required Erlang/OTP Maximum supported Erlang/OTP Notes
  • 3.7.8
  • 3.7.7
  • 19.3.6.4
  • 21.0.x
  • RabbitMQ 3.7.7 is the first version to support Erlang/OTP 21
  • Erlang/OTP 21 includes file I/O efficiency improvements
  • For the best TLS support, the latest version of Erlang/OTP 21.0.x is recommended
  • Versions prior to 19.3.6.4 have known bugs (e.g. ERL-430, ERL-448) that can prevent RabbitMQ nodes from accepting connections (including from CLI tools) and stopping
  • Versions prior to 19.3.6.4 are vulnerable to the ROBOT attack (CVE-2017-1000385)
  • On Windows, Erlang/OTP 20.2 changed default cookie file location
  • 3.7.6
  • 3.7.5
  • 3.7.4
  • 3.7.3
  • 3.7.2
  • 3.7.1
  • 3.7.0
  • 19.3
  • 20.3.x
  • For the best TLS support, the latest version of Erlang/OTP 20.3.x is recommended
  • We recommend Erlang/OTP 19.3.6.4 or later, earlier versions have known bugs (e.g. ERL-430, ERL-448) that can prevent RabbitMQ nodes from accepting connections (including from CLI tools) and stopping
  • Versions prior to 19.3.6.4 are vulnerable to the ROBOT attack (CVE-2017-1000385)
  • On Windows, Erlang/OTP 20.2 changed default cookie file location
  • 3.6.16
  • 3.6.15
  • 19.3
  • 20.3.x
  • 3.6.14
  • 3.6.13
  • 3.6.12
  • 3.6.11
  • R16B03
  • 20.1.x
  • For the best TLS support, the latest version of Erlang/OTP 20.1.x is recommended
  • We recommend Erlang/OTP 19.3.6.4 or later, earlier versions have known bugs (e.g. ERL-430, ERL-448) that can prevent RabbitMQ nodes from accepting connections (including from CLI tools) and stopping
  • Versions prior to 19.3.6.4 are vulnerable to the ROBOT attack (CVE-2017-1000385)
  • 3.6.10
  • 3.6.9
  • 3.6.8
  • 3.6.7
  • 3.6.6
  • 3.6.5
  • 3.6.4
  • R16B03
  • 19.3.x
  • For the best TLS support, the latest version of Erlang/OTP 19.3.x is recommended
  • We recommend Erlang/OTP 19.3.6.4 or later, earlier versions have known bugs (e.g. ERL-430, ERL-448) that can prevent RabbitMQ nodes from accepting connections (including from CLI tools) and stopping
  • Versions prior to 19.3.6.4 are vulnerable to the ROBOT attack (CVE-2017-1000385)
  • 3.6.3
  • 3.6.2
  • 3.6.1
  • 3.6.0
  • R16B03
  • 18.3.x
  • Erlang 18.x versions have known bugs (e.g. ERL-430, ERL-448) that can prevent RabbitMQ nodes from accepting connections (including from CLI tools) and stopping
  • All Erlang versions supported by these releases are vulnerable to the ROBOT attack (CVE-2017-1000385)
  • 3.5.x
  • R14B04
  • 17.5.x
  • RabbitMQ 3.5 was released 2015-03-11, and reached end of life 2017-09-11, we strongly discourage its use
  • 3.4.x
  • R13B03
  • 16B03
  • RabbitMQ 3.4 was released 2014-10-21, and reached end of life 2017-05-31, we strongly discourage its use

As a rule of thumb, most recent stable (GA) versions of Erlang/OTP 19.3.x or 20.3.x are recommended for running RabbitMQ. Most recent versions can be obtained from:

Installing Erlang/OTP on Debian or Ubuntu

Standard Debian and Ubuntu repositories provide Erlang/OTP but it is heavily sliced and diced into dozens of packages. In addition, unless the system has backport repositories enabled, the versions tend to be quite old. See Debian and Ubuntu installation guide for more information on the essential packages, dependencies, and alternative apt repositories.

Installing Erlang/OTP on CentOS, RHEL or Fedora

There are multiple RPM packages for Erlang/OTP, including a zero-dependency Erlang RPM from the RabbitMQ team. See CentOS, RHEL and Fedora installation guide for more information on the available options.

Configuration and plugin-specific Erlang/OTP Version Requirements

Certain RabbitMQ configurations require more recent versions:

If you want to: Minimum required Erlang/OTP Notes
build / run RabbitMQ server and most plugins 19.3
use TLS reliably 19.3 Covers most common signature algorithms and can honor server ciphers order. 20.0.5 or later version are recommended.

Erlang Versions in Clusters

RabbitMQ requires that the same major and minor version of Erlang is used across all cluster nodes (e.g. 20.3.x). RabbitMQ will check for protocol versions of Erlang and its distributed libraries when a node joins a cluster, refusing to cluster if there's a potentially incompatible combination detected.

It is highly recommended that all nodes use exactly the same version of Erlang.

Building from Source

If a sufficiently recent Erlang package is not available for your system then you will need to build Erlang from source. This requires a build environment that satisfies the Erlang build dependencies, such as OpenSSL. kerl is the recommended way of doing that.

kerl makes building Erlang/OTP releases from source, including specific tags from GitHub, a much more pleasant experience.

Older Erlang Versions

Last Version to Support R16B03

If you absolutely must use an older version of Erlang, RabbitMQ 3.6.14 is the newest version compatible with R16B03.

Last Version to Support R13B03

If you absolutely must use an older version of Erlang, RabbitMQ 3.5.8 is the newest version compatible with R13B03.

Getting Help and Providing Feedback

If you have questions about the contents of this guide or any other topic related to RabbitMQ, don't hesitate to ask them on the RabbitMQ mailing list.

Help Us Improve the Docs <3

If you'd like to contribute an improvement to the site, its source is available on GitHub. Simply fork the repository and submit a pull request. Thank you!