更新时间:2024-05-29 GMT+08:00

与RabbitMQ、RocketMQ的差异

表1 功能差异

功能项

RocketMQ

Kafka

RabbitMQ

优先级队列

不支持

不支持

支持。建议优先级大小设置在0-10之间。

延迟队列

支持

不支持

支持

死信队列

支持

不支持

支持

消息重试

支持

不支持

不支持

消费模式

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

客户端主动拉取

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

广播消费

支持

支持

支持

消息回溯

支持

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

不支持。RabbitMQ中消息一旦被确认消费就会被标记删除。

消息堆积

支持

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

支持

持久化

支持

支持

支持

消息追踪

支持

不支持

支持

RabbitMQ中可以采用Firehose或者rabbitmq_tracing插件实现,但开启rabbitmq_tracing插件会影响性能,建议只在定位问题过程中开启。

消息过滤

支持

支持

不支持,但可以自行封装。

多租户

支持

不支持

支持

多协议支持

兼容RocketMQ协议

只支持Kafka自定义协议。

RabbitMQ基于AMQP协议实现,同时支持MQTT、STOMP等协议。

跨语言支持

支持多语言的客户端

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

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

流量控制

待规划

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

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

消息顺序性

单队列(queue)内有序

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

不支持。需要单线程发送、单线程消费并且不采用延迟队列、优先级队列等一些高级功能整体配合,才能实现消息有序。

安全机制

支持SSL认证

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

支持SSL认证

事务性消息

支持

支持

支持