该如何选择消息队列
1.基本标准
- 开源
- 流行
- 与其他产品比较好的集成和兼容
2.特征
- 消息的可靠传递,确保消息不丢失
- Cluster:支持集群,某个节点宕机,也不丢消息
- 性能:足够好的性能
3.产品
3.1 RabbitMQ
3.1.1介绍
- Erlang语言编写,支持AMQP协议
- 轻量级、迅捷
- 最流行的消息中间之一
- 支持灵活的的路由配置
- 生产者(Producer)和队列之间增加Exchange模块,理解为交换机
3.1.2问题
- 对消息堆积的支持不好(原先设计理念消息队列是管道)
- 性能不是最好的
- 编程语言小众,不好扩展和二次开发
3.2 RocketMQ
- Java语言开发
- 性能好,稳定,可靠
- 毫秒级的响应
- 国产软件,与周边生态系统的集成和兼容不太好
3.3 Kafka
- 设计目的处理海量的日志
- 早期不保证消息可靠,不支持集群
- 与周边生态系统的兼容性是最好的
- 使用Scala和java语言
- 设计上大量使用了批量和异步的思想,尤其在异步收发性能上,三者最好
- 不太适合在线业务场景
4.总结
- 消息队列不是主要角色使用RabbitMQ
- 处理在线业务,使用RocketMQ
- 处理海量消息,使用kafka