与Kafka、RabbitMQ的差异
| 功能项 | RocketMQ | Kafka | RabbitMQ |
|---|---|---|---|
| 优先级队列 | 不支持 | 不支持 |
|
| 延迟队列 | 支持 | 不支持 |
|
| 死信队列 | 支持 | 不支持 | 支持 |
| 消息重试 | 支持 | 不支持 |
|
| 消费模式 | 支持客户端主动拉取和服务端推送两种方式。 | 客户端主动拉取。 | 支持客户端主动拉取和服务端推送两种模式。 |
| 广播消费 | 支持 | 支持 | 支持 |
| 消息回溯 | 支持 | 支持。Kafka支持按照offset和timestamp两种维度进行消息回溯。 |
|
| 消息堆积 | 支持 | 支持。考虑吞吐因素,Kafka的堆积效率比RabbitMQ总体上要高。 | 支持 |
| 持久化 | 支持 | 支持 | 支持 |
| 消息追踪 | 支持 | 不支持 |
|
| 消息过滤 | 支持 | 支持 |
|
| 多租户 | 支持 | 支持 | 支持 |
| 多协议支持 | 兼容RocketMQ协议。 | 只支持Kafka自定义协议。 | RabbitMQ基于AMQP协议实现。 |
| 跨语言支持 | 支持多语言的客户端。 | 采用Scala和Java编写,支持多种语言的客户端。 | 支持多种语言的客户端。 |
| 流量控制 | RocketMQ 5.x支持基于实例规格的流量控制。 | 支持client、user和Topic级别,通过主动设置可将流控作用于生产者或消费者。 | RabbitMQ的流控基于Credit-Based算法,是内部被动触发的保护机制,作用于生产者层面。 |
| 消息顺序性 | 单队列(queue)内有序。 | 支持单分区(partition)级别的顺序性。 | 单线程发送、单线程消费并且不采用延迟队列、优先级队列等一些高级功能时,才能实现消息有序。 |
| 安全机制 | 支持SSL认证。 | 支持SSL、SASL身份认证和读写权限控制。 |
|
| 事务性消息 | 支持 | 支持 |
|