RabbitMQ is an open source project under the Mozilla Public License. Designed to be a stable platform for message based middleware, RabbitMQ specializes in governing asynchronous wire protocol connections between applications. By providing you with an exchange server and a set of managerial plug-ins, it leverages the Advanced Message Queuing Protocol (AMQP) for message orientation, security, queuing, and routing.
Broken down, the project consists of the following:
- RabbitMQ Exchange Server
- Gateways for common protocols, including: HTTP, STOMP, and MQTT.
- A plugin set consisting of: Shovel (replicating messages between RabbitMQ exchange servers), Federation (sharing messages between RabbitMQ exchange servers), and Management (monitoring RabbitMQ exchange servers).
RabbitMQ establishes a common platform to asynchronously send, receive and queue messages - without blocking. Whether you're working with push notifications, publish/subscribe or data-delivery between application interfaces, a cluster of RabbitMQ instances like those offered at Compose amplify the reliability, scalability and security of the entity in command of your message queuing, sending, and receiving.
RabbitMQ for All is a general introduction to RabbitMQ on Compose.
Are you wondering what you'll get, or can get, with a Compose RabbitMQ deployment? Want to know what you'll need to do to manage it? Check out some of the implementation features and details down in RabbitMQ for Ops and Admins.
Just deployed RabbitMQ and want to get coding with it? Developing an application or want to try a new stack? Then see the
RabbitMQ for Developers section for resources on how to connect from different languages, command line tools and more information to get you started.
When deployed on Compose, RabbitMQ comes with these standard Compose features.
- Automatically scaling server stack that scales RAM, CPU, and I/O as your queue data grows.
- Daily, weekly, monthly, and on-demand backups.
- Metrics displayed in the Compose UI
- Deploy, manage, backup, and otherwise automate database tasks through The Compose API.
- Guaranteed resources per deployment.
- Daily logs available for download.
Compose deployments of RabbitMQ also come with a number of RabbitMQ specific features:
- Data Browser For RabbitMQ.
- An optional add-on for real-time log access.
- The ability to forward rich metrics to services with an optional add-on.
- Start with 256MB memory for $28.50 - as you grow each additional 256MB block costs $19.50.
We start RabbitMQ deployments with three nodes and two haproxy portals. The three nodes each contain 256MB memory and 256 MB of storage. Each of the two haproxy portals have 64MB of memory.
RabbitMQ deployments offer automatic vertical scaling as your data set grows. It is also possible for you to manually scale the three nodes with more memory and storage in 256MB increments from the deployment's Resources panel. The haproxy portals can also be scaled with more memory in 64MB blocks, if needed.
Additional TCP/haproxy portals may also be added from the Security panel.
For more information see the RabbitMQ Resources and Scaling page.
See Compose Datacenter Availability for current location availability.
Compose deployments are billed based on disk usage and your RabbitMQ deployment usage is measured hourly. It is then grouped into a single monthly billing cycle. This means that any scaling or add-on usage will be charged from when the new resource was provisioned; not just for the month. You can see your deployment's usage in the Overview panel, under Current Usage.
Initial deployment set up is $28.50/month. Depending on which scaling and add-ons options you choose, the cost will increase. For example, if you wish to add extra storage and RAM, it is billed at an additional $19.50/month per unit of 256MB storage/256MB memory, so an additional 512MB storage/512MB memory will cost an additional $39/month.
We provide you with a three node, two proxy deployment. The three nodes act unanimously as a highly available broker, each running the RabbitMQ application and sharing users, virtual hosts, queues, exchanges, bindings, and runtime parameters. All data/state required for the operation of a RabbitMQ broker is replicated across all nodes.
By default message queues reside only on one node (although visible to all nodes), but with the high-availability configuration Compose offers, the message queues are mirrored across all nodes, with one master and the others mirrors. The mirrors apply the operations that occur to the master in exactly the same order as the master and thus maintain the same state. All actions other than publishes go only to the master, and the master then broadcasts the effect of the actions to the mirrors. Should the master fail one of the mirrors is promoted and the RabbitMQ broker functions normally.
There are two haproxy nodes ensure HTTPS connections to your deployment and provide load-balancing, and high-availability for your connections; you're free to use either but it's advisable to be able to fail over if you can't reach one.
RabbitMQ backups are a JSON representation of your broker's metadata. It's created from an
export command provided by the RabbitMQ management plugin. Running the
export on your deployment does not impact performance. Your backups are available to download or to restore to a new Compose deployment in the Backups panel of the Compose UI. For more information, see the Backups page.
Because you can download and save the metadata from your RabbitMQ broker, you can get your RabbitMQ deployment up and running locally. You will need to have a local instance of RabbitMQ running, with the management plug-in included in the RabbitMQ distribution. Enable it with
rabbitmq-plugins enable rabbitmq_management. This additionally will get you:
- the Admin UI at
- the HTTP API at
- and the API's command-line tool
To import the JSON backup file, you can:
- through the Admin UI at http://localhost:15672/, use the Import/Export definitions function at the bottom of the Overview page.
- through the API, send a POST to
curl -i -u guest:guest -H "content-type:application/json" -X POST --data @<path_to_your_rabbitmq_backup> http://localhost:15672/api/definitions
- use the command
rabbitmqadmin import <your_rabbitmq_backup>.
Since the Administrative Console is built-in to RabbitMQ, it is the recommended way to interact and administrate your data outside of an application or script. The other options that RabbitMQ has built in; the Management API and its command-line interface
rabbitmqadmin, only use HTTP and are not supported on Compose RabbitMQ deployments.
Compose RabbitMQ currently supports only AMQPS TLS secured connection into deployments. The Overview panel of the Compose UI provides the basic information you need to get connected to your databases. In the section Connection info you will find the Connection Strings for your application. For more information and examples in a few popular languages, check out Connecting to RabbitMQ.
At Compose, we apply RabbitMQ as a fundamental contributor to the core fabric of our application. If you've seen "Despicable Me" or "Minions", this naming convention may make intuitive sense to you! Our platform control center, known as Gru, orchestrates the behavior of each "minion". Gru sends out recipes to his minions, requesting actions on our deployments: provision, destroy, verify state, for example.
The minions receive, execute, then await their next order. RabbitMQ allows the minions to decouple from Gru and operate asynchronously, brokering messaged "recipes" and subscribed "check-ins" from application to application.
The full list of documentation for RabbitMQ is in the sidebar, in addition to all things Compose.
If this article didn't solve things, summon a human and get some help!