主要是比较这几种队列中间件:
rabbitmq
kafka
rocketmq
ONS
分以下几个维度来比较
高并发
毫无疑问KAFKA发消息的速度是最快的
ROCKETMQ/ONS次之
rabbitmq最慢
高可用
这几种都能做MASTER/SLAVE,跨机房的高可用
KAFKA复制有很多坑,所以这个分数要降低
所需要的节点数量
KAFKA集群环境下,需要依赖zk, zk至少3个节点,再加上kafka的至少3个节点,那就是6个
ROCKETMQ集群环境下,虽然不依赖zk,但是需要name server,至少2个节点,2个MASTER,就是4个
RABBITMQ集群环境下,不依赖zk,只要3个erlang node,就是3个
全局顺序消费
KAFKA只要在分区是1个情况下才能大致的做到全局消费的顺序
ROCKETMQ/ONS同上,只是变成了另外一个术语
RABBITMQ能大致保证全局顺序消费
以上所讲的都是消息没有被拒绝或者消息处理失败重新回到队列的情况
其他功能-流控
只有RabbitMQ有
其他功能-优先级队列
RabbitMQ对优先级队列支持最完善
结论
Rabbitmq很适用于小团队和高并发不是很突出的地方,并且团队希望尽量自动化
牵涉到高并发,并且是业务消息要用rocketmq/ons
牵涉到高并发,但不是业务消息的用kafka
https://www.cnblogs.com/aarond/p/queue-compare.html