特性 | ActiveMQ | RabbitMQ | RocketMQ | kafka |
开发语言 | java | erlang | java | scala |
单机吞吐量 | 万级 | 万级 | 10万级 | 10万级 |
时效性 | ms级 | us级 | ms级 | ms级以内 |
可用性 | 高(主从架构) | 高(主从架构) | 非常高(分布式架构) | 非常高(分布式架构) |
功能特性 | 成熟的产品,在很多公司得到应用;有较多的文档;各种协议支持较好 | 基于erlang开发,所以并发能力很强,性能极其好,延时很低;管理界面较丰富 | MQ功能比较完备,扩展性佳 | 只支持主要的MQ功能,像一些消息查询,消息回溯等功能没有提供,毕竟是为大数据准备的,在大数据领域应用广。 |
选择RabbitMQ原因
- Rabbit mq 是一个高级消息队列,在分布式的场景下,拥有高性能。,对负载均衡也有很好的支持。
- 拥有持久化的机制,进程消息,队列中的信息也可以保存下来。
- 实现消费者和生产者之间的解耦。
- 对于高并发场景下,利用消息队列可以使得同步访问变为串行访问达到一定量的限流,利于数据库的操作。
- 可以使用消息队列达到异步下单的效果,排队中,后台进行逻辑下单。
AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在
rabbitMQ的优点
- 基于erlang语言开发具有高可用高并发的优点,适合集群服务器。
- 健壮、稳定、易用、跨平台、支持多种语言、文档齐全。
- 有消息确认机制和持久化机制,可靠性高。
- 开源
其他MQ的优势: - Apache ActiveMQ曝光率最高,但是可能会丢消息。
- ZeroMQ延迟很低、支持灵活拓扑,但是不支持消息持久化和崩溃恢复。
其他消息队列优点
Kafka 定位是日志消息队列。吞吐量最大。
相比阿里的Rocket MQ ,Rabbit MQ 是可靠性更强,对数据一致性、稳定性和可靠性要求很高的场景。
劣势是Rabbit mQ 的性能,吞吐量不高。