Plugins

RabbitMQ supports a variety of plugins. This page documents the plugins that ship with vFabric RabbitMQ 3.2.2.

To enable plugins, use the rabbitmq-plugins tool:

rabbitmq-plugins enable plugin-name

And to disable plugins again, use:

rabbitmq-plugins disable plugin-name

You can see a list of which plugins are enabled with:

rabbitmq-plugins list

Enabling or disabling plugins has no effect on a running RabbitMQ server. You will need to (re)start RabbitMQ for the enabled plugins to be activated.

For more information on rabbitmq-plugins, consult the manual page.

Please note: the rabbitmq-plugins tool misreports the supported status of some of these plug-ins. In the case of a discrepancy, this page provides the authoritative record.

Supported Plugins

rabbitmq_auth_backend_ldap Authentication / authorisation plugin using an external LDAP server. See the the page on the LDAP plugin for more information.
rabbitmq_auth_mechanism_ssl Authentication mechanism plugin using SASL EXTERNAL to authenticate using SSL client certificates. See the README for more information.
rabbitmq_consistent_hash_exchange Consistent hash exchange type. Please see the README for more information.
rabbitmq_federation Scalable messaging across WANs and administrative domains. See the page on the federation plugin for more information.
rabbitmq_federation_management Shows federation status in the management API and UI. Only of use when using rabbitmq_federation in conjunction with rabbitmq_management. In a heterogenous cluster this should be installed on the same nodes as rabbitmq_management.
rabbitmq_management A management / monitoring API over HTTP, along with a browser-based UI. For more information, see the page on the management plugin.
rabbitmq_management_agent When installing the management plugin on some of the nodes in a cluster, you must install rabbitmq_management_agent on all of the nodes in the cluster. You can install the full management plugin on as many of the nodes as you want.
rabbitmq_mqtt An adapter implementing the MQTT 3.1 protocol. Please see the documentation and the RabbitMQ blog for more information on using it.
rabbitmq_shovel A plug-in for RabbitMQ that shovels messages from a queue on one broker to an exchange on another broker. Please see the page on the shovel plugin for more information or take a look at a working Shovel configuration.
rabbitmq_shovel_management Shows shovel status in the management API and UI. See the plugin README. Only of use when using rabbitmq_shovel in conjunction with rabbitmq_management. In a heterogenous cluster this should be installed on the same nodes as rabbitmq_management.
rabbitmq_stomp A gateway for exposing AMQP functionality via the STOMP protocol. (Some clients and servers supporting STOMP are listed here.) Please see the documentation and various blog articles about the adapter for more information on compiling and configuring it.

Unsupported Plugins

Currently, all plugins below are not supported. This means we make no claims about their fitness for purpose or stability, though they are in general under active development.

rabbitmq_management_visualiser Broker topology visualiser plugin which is itself a plugin to the management plugin. Adds a Visualiser tab to the management web interface, which then flexibly and interactively displays channels, queues and exchanges, and the links between them.
rabbitmq_tracing Adds message tracing to the management plugin. Logs messages from the firehose in a couple of formats.
rabbitmq_jsonrpc_channel An AMQP-over-HTTP protocol binding for RabbitMQ and some Javascript libraries for interacting with RabbitMQ over HTTP.
rabbitmq_jsonrpc_channel_examples Adds some example web applications to rabbitmq_jsonrpc_channel: a shared whiteboard, a chat application, and some tests.
rabbitmq_web_stomp A bridge exposing rabbitmq_stomp to web browsers using WebSockets, using the WebSockets emulation / compatibility layer SockJS. Please see the page on the web-stomp plugin.
rabbitmq_web_stomp_examples Adds some basic examples to rabbitmq_web_stomp: a simple "echo" service and a basic canvas-based collaboration tool.
rabbitmq_amqp1_0 An implementation of the AMQP 1.0 protocol. See the README for more details.

Installing Additional Plugins

Some plugins are also available from third party sources. Plugins will generally be available in two forms. The expected form for a packaged plugin will be a .ez erlang archive. Alternatively, more developmental plugins may be distributed directly from source control. Once you have one or more .ez archives for your plugins, you need to copy them to the plugins directiory.

The plugins directory location is determined by the RABBITMQ_PLUGINS_DIR variable. Its default value depends on how you installed RabbitMQ. Some common values are:

Installation methodPlugins directory
Debian/RPM packages /usr/lib/rabbitmq/lib/rabbitmq_server-version/plugins
Windows Typically C:\Program Files\RabbitMQ\rabbitmq_server-version\plugins (depending on where it was installed)
Macports ${install_prefix}/lib/rabbitmq/lib/rabbitmq_server-version/plugins (the Macports ${install_prefix} defaults to /opt/local)
Homebrew /usr/local/Cellar/rabbitmq/version/lib/rabbitmq/erlang/lib/rabbitmq-version/plugins
Generic Unix rabbitmq_server-version/plugins (depending on where it was installed)

The variable's meaning has changed in 2.7.0: whereas it previously referred to the directory of installed plugins, it now refers to the directory with all available plugins. The rabbitmq-plugins tool can only enable plugins found in this directory.

Plugins and Upgrades

The enabled plugins configuration is preserved between upgrades, so there is no need to re-enable plugins after an upgrade, but because the plugins directory changes between versions, any third party plugins will need to be copied to the new directory. It's very possible that due to API changes you may need to check for updates to third party plugins at this point.