Comparing RocketMQ, Kafka, and RabbitMQ
Feature | RocketMQ | Kafka | RabbitMQ |
---|---|---|---|
Priority queue | Not supported | Not supported | Supported. It is recommended that the priority be set to 0–10. |
Delayed queue | Supported | Not supported | Supported |
Dead letter queue | Supported | Not supported | Supported |
Message retry | Supported | Not supported | Not supported. |
Retrieval mode | Pull-based and push-based | Pull-based | Pull-based and push-based |
Message broadcasting | Supported | Supported | Supported |
Message tracking | Supported | Supports offset and timestamp tracking. | Not supported. Once a message retrieval has been acknowledged, RabbitMQ will be notified that the message can be deleted. |
Message accumulation | Supported | Supports higher accumulation performance than RabbitMQ thanks to high throughput. | Supported |
Persistence | Supported | Supported | Supported |
Message tracing | Supported | Not supported | Supported by the firehose feature or the rabbitmq_tracing plugin. However, rabbitmq_tracing reduces performance and should be used only for troubleshooting. |
Message filtering | Supported | Supported | Not supported, but can be encapsulated. |
Multi-tenancy | Supported | Supported | Supported |
Multi-protocol | Compatible with RocketMQ. | Only supports Apache Kafka. | RabbitMQ is based on AMQP. |
Multi-language | Supports clients in multiple programming languages. | Kafka is written in Scala and Java and supports clients in multiple programming languages. | Supports clients in multiple programming languages. |
Throttling | RocketMQ 5.x supports traffic control based on instance specifications. | Supports throttling on producer or consumer clients, users, and topics. | Supports credit-based throttling on producers, a mechanism that triggers protection from within. |
Ordered message delivery | Message order is maintained within a queue. | Supports partition-level FIFO. | Supports FIFO only for single-threaded message queuing without advanced features such as delayed queues or priority queues. |
Security | Supports SSL authentication. | Supports SSL and SASL authentication and read/write permissions control. | Supports SSL authentication. |
Transactional messages | Supported | Supported | Supported |