更新时间:2024-11-11 GMT+08:00

与Kafka、RocketMQ的差异

表1 功能差异

功能项

RocketMQ

Kafka

RabbitMQ

优先级队列

不支持

不支持

  • 3.8.35版本:支持。建议优先级大小设置在0-10之间。
  • AMQP-0-9-1版本:支持。优先级大小设置在1-9之间。

延迟队列

支持

不支持

  • 3.8.35版本:不支持。
  • AMQP-0-9-1版本:支持。

死信队列

支持

不支持

支持

消息重试

支持

不支持

  • 3.8.35版本:不支持。
  • AMQP-0-9-1版本:支持。

消费模式

支持客户端主动拉取和服务端推送两种方式。

客户端主动拉取。

支持客户端主动拉取和服务端推送两种模式。

广播消费

支持

支持

支持

消息回溯

支持

支持。Kafka支持按照offset和timestamp两种维度进行消息回溯。

  • 3.8.35版本:不支持。RabbitMQ中消息一旦被确认消费就会被标记删除。
  • AMQP-0-9-1版本:支持。

消息堆积

支持

支持。考虑吞吐因素,Kafka的堆积效率比RabbitMQ总体上要高。

支持

持久化

支持

支持

支持

消息追踪

支持

不支持

  • 3.8.35版本:不支持。
  • AMQP-0-9-1版本:支持。

消息过滤

支持

支持

  • 3.8.35版本:不支持,但可以自行封装。
  • AMQP-0-9-1版本:支持。

多租户

支持

支持

支持

多协议支持

兼容RocketMQ协议。

只支持Kafka自定义协议。

RabbitMQ基于AMQP协议实现。

跨语言支持

支持多语言的客户端。

采用Scala和Java编写,支持多种语言的客户端。

支持多种语言的客户端。

流量控制

RocketMQ 5.x支持基于实例规格的流量控制。

支持client、user和Topic级别,通过主动设置可将流控作用于生产者或消费者。

RabbitMQ的流控基于Credit-Based算法,是内部被动触发的保护机制,作用于生产者层面。

消息顺序性

单队列(queue)内有序。

支持单分区(partition)级别的顺序性。

单线程发送、单线程消费并且不采用延迟队列、优先级队列等一些高级功能时,才能实现消息有序。

安全机制

支持SSL认证。

支持SSL、SASL身份认证和读写权限控制。

  • 3.8.35版本:支持SSL认证。
  • AMQP-0-9-1版本:支持ACL访问控制。

事务性消息

支持

支持

支持