如何选择消息队列
作为一款及格的消息队列产品,必须具备的几个特性包括
- 消息的可靠传递:确保不丢消息;Cluster:
- 支持集群,确保不会因为某个节点宕机导致服务不可用,当然也不能丢消息;
- 性能:具备足够好的性能,能满足绝大多数场景的性能要求。
各消息队列产品对比
RabbitMQ
优点
- 支持AMQP协议,轻量级、容易部署和使用
- 灵活的路由配置,exchange模块
- 客户端支持语言种类多
缺点
- 对消息堆积的支持并不好,大量堆积时会导致rabbitmq性能急剧下降
- 性能差,支持每秒处理几万到十几万条消息
- 编程语言Erlang,非常小众
RocketMQ
优点
- 阿里出品、社区活跃,JAVA开发
- 毫秒级响应,每秒处理几十万消息
缺点
- 国际上没那么流行,周边生态集成和兼容略逊一筹
Kafka
优点
- 与周边生态系统的兼容性是最好的没有之一,尤其在大数据和流计算领域
- 设计上大量使用了批量和异步的思想
- 性能最好,每秒处理几十万跳消息,极限可到千万级别
缺点
- 异步批量的设计带来的问题是,它的同步收发消息的响应时延比较高
- Kafka不太适合在线业务场景。