What is the difference between RabbitMQ Classic, Quorum, and Stream queue types?
Answer
RabbitMQ's three queue types serve different use cases. Classic queues: the original queue type. Two sub-types: non-replicated (data on one node) and mirrored (deprecated — async replication to mirrors with known data loss risks on failover). Still supported but Quorum queues are preferred for new deployments. Best for: simple use cases, existing deployments. Limitations: potential message loss on node failure (non-mirrored), complex mirror sync issues. Quorum queues: replicated using Raft consensus. Majority must acknowledge before a write is confirmed. Zero message loss on failover — any committed message is always available in the new leader. Best for: most production use cases requiring durability and high availability. Limitations: higher write latency (Raft overhead), more disk usage (Raft log), all nodes must be RabbitMQ 3.8+. Stream queues: append-only log with consumer offset tracking. Messages retained until size/time limit. Multiple independent consumers, replay from any offset. Best for: high-throughput event streaming, audit logs, event sourcing, Kafka-like use cases. Limitations: different consumer API (stream protocol preferred), higher complexity. Choose Quorum for task queues; Stream for event streaming.
Previous
What are advanced Cassandra data modeling patterns?
Next
How does Cassandra handle schema migrations in production?
More RabbitMQ & Cassandra Questions
View all →- Advanced What are Cassandra's anti-patterns and how do you avoid them?
- Advanced How does RabbitMQ handle message ordering and exactly-once delivery?
- Advanced What is Cassandra multi-datacenter architecture and geo-distribution?
- Advanced How does RabbitMQ federation and shovel work for multi-datacenter setups?
- Advanced What is Cassandra's SASI index?