RabbitMQ on Compose
RabbitMQ offers a powerful messaging platform for applications which can help decouple complex or busy architectures through message exchanges and queues. On Compose, you can harness that power as simply as any Compose database.
Many developers find themselves writing applications which use databases as persistent message queues and run into a range of timing and consistency issues. With RabbitMQ, they can eliminate those problems by using a platform designed to handle messaging between numerous applications and clients.
RabbitMQ is a lightweight and powerful open source message broker which is built around the AMQP 0.9.1 standard. With support for other messaging protocols such as MQTT and STOMP integrated, RabbitMQ also offers an architecture which can unify an organization's messaging. RabbitMQ supports message queuing, delivery acknowledgment and a range of exchanges capable of flexibly routing messages to those message queues.
RabbitMQ's authentication and authorization features work alongside required Let's Encrypt certificate backed TLS on the Compose platform. There's easy access to the RabbitMQ administration console, beyond the deployment administration console built into every Compose offering. Developers will also find a wide range of libraries support RabbitMQ messaging, from Java to Go and from PHP to Python.
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.
RabbitMQ for all
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:
- RabbitMQ Management Plugin
- RabbitMQ plugin support for STOMP and MQTT protoclols, along with delayed messaging support.
- 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.
Compose Configurations
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.
Expansion Options
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.
Datacenter Availability
See Compose Datacenter Availability for current location availability.
Billing and Costs
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.
For Ops and Admins
High-availability and Failover Details
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.
High Resolution Scaling
Starting with RabbitMQ 3.6.5, the autoscaling system samples the resource consumption of deployments sixty times faster (once a minute) than standard Compose autoscaling.This makes it extra-responsive to the demands a predominantly memory-based database can place on resources.
Backups
RabbitMQ backups are a JSON representation of your broker's metadata. They can be downloaded so you can stand up a local broker for development or testing purposes, or they can be restored directly into a new deployment. More information is on the Backups for RabbitMQ page.
For Developers
CLI Tools (or Not)
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.
Connecting to RabbitMQ
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 .
Use-case - Compose
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.
Additional Resources and Related Articles
The full list of documentation for RabbitMQ is in the sidebar, in addition to all things Compose.
For more than just help docs, check out Compose Articles and our curated collection of RabbitMQ-related topics for more how-to's and information on RabbitMQ on Compose.
Still Need Help?
If this article didn't solve things, summon a human and get some help!
Updated about 3 years ago