What is RabbitMQ?
RabbitMQ is a message broker that lets parts of an application communicate asynchronously. Instead of doing slow work inside a web request, an application publishes a message to a queue and a separate worker process consumes it later. This keeps the user-facing site responsive while heavier jobs run in the background.
RabbitMQ speaks the AMQP (Advanced Message Queuing Protocol) standard. It is widely used for offloading tasks such as sending emails, processing imports, rebuilding indexes, and any other work that should not block the main application. Producers, queues, and consumers are decoupled, so each side can scale and fail independently.
On TurboStack
RabbitMQ is provided as an application technology that you enable per application, with broker-level options managed at the host.
-
You turn RabbitMQ on for an application by enabling it in the application configuration. TurboStack then provisions and manages the broker for you.
-
The RabbitMQ version and any plugins are set as host-level advanced options, so the broker is kept consistent for the applications that use it.
-
RabbitMQ is the message queue behind OroCommerce, which relies on a message queue to process background jobs. When you deploy OroCommerce, enable RabbitMQ so its consumers have a broker to connect to.
Note
RabbitMQ runs background work. You still need a worker or consumer process (for example, OroCommerce's message-queue consumers) actually draining the queues, otherwise messages simply accumulate.
Best practices
-
Enable RabbitMQ only for applications that genuinely use a message queue, to avoid running an idle broker.
-
Keep consumers running and monitored so queues are drained continuously rather than backing up.
-
Watch queue depth - a growing backlog usually means too few consumers or a stuck worker.
-
Make message handlers idempotent, meaning handling the same message twice has the same result as handling it once, so a redelivered message does not cause duplicate side effects.
-
Pin a known-good RabbitMQ version per host and only add the plugins your application actually needs.