RabbitMQ is a solid, general-purpose message broker that supports several protocols such as AMQP (1.0 and 0.9.1), MQTT, STOMP, etc. It can handle high throughput. A common use case for RabbitMQ is to handle background jobs or long-running task, such as file scanning , image scaling or PDF conversion. RabbitMQ is also used between microservices, where it serves as a means of communicating between applications, avoiding bottlenecks passing messages. 
 Update since the release of RabbitMQ Streams: RabbitMQ stands out for offering various queue types , each designed for specific messaging needs. Traditionally, all RabbitMQ's queues would delete messages once consumed and acknowledged, which made them unsuitable for long-term storage or replaying messages - but that changed with RabbitMQ v3.9 when another queue type was introduced, Stream Queues. Stream Queues are persistent and replicated, and like traditional queues, they buffer messages from producers for consumers. Under the hood, Streams model an append-only log that's immutable. In this context, messages written to a Stream can't be erased; they can only be read. To read messages from a Stream in RabbitMQ, one or more consumers su