导航
导航

rabbitmq与kafka对比

多方面资料整理而来

rabbmq基于erlang语言开发,并发能力强,性能好 延迟低。功能比较完备而且开 源提供的管理界面非常棒。但是在吞吐量不及kafka。 kafka优势就是高吞吐,功能较为简单,主要支持简单的 MQ功能,在大数据领域的实时计算以及日志采集被大规模使用。唯一劣势就是有可能消息重复消费,对数据的准确性造成影响。

调研了公司的各项目的mq选择,选取rabbitmq与kafka

设计语言的区别: RabbitMQ是采用Erlang语言实现的消息中间件 kafka是采用Scala语言开发高吞吐量的分布式发布订阅消息系统

需要的功能各个维度来做对比:

优先级队列(优先级高的消息具备优先被消费的特权)

延迟队列(延迟消费)

消费模式(消息的推模式和拉模式,推模式是指由Broker主动推送消息至消费端。拉模式是指消费端主动向Broker端请求拉取)

消息回溯(指消息在消费完成之后,还能消费到之前被消费掉的消息)

持久化

消息追踪(知道消息从哪来,存在哪里以及发往哪里去)

多租户(确保各用户间数据的隔离性)

跨语言支持

安全机制(身份认证和权限控制)

消息确认

Kafka不支持优先级队列,不支持延迟队列。只有拉模式,支持消息回溯(按照offset和timestamp两种维度进行消息回溯。),支持持久化不支持消息追踪,支持多租户,跨语言支持,支持安全机制,支持消息确认。

rabbitmq支持优先级队列,支持延迟队列(通过DLX与TTL 实现延迟队列的功能。)。推模式+拉模式,不支持消息回溯,,支持持久化,支持消息追踪(插件实现),支持多租户,跨语言支持,支持安全机制,支持消息确认