常用消息中间件(消息队列)汇总
消息队列(message queue,MQ)使用典型的生产者和消费者模型,生产者不断向消息队列中生产消息,消费者不断从消息队列中获取消息。消息的生产和消费都是异步的这一特性,使得我们可以利用消息队列轻松地实现了系统之间的解耦。
另外,消息队列也称为消息中间件,通过利用高效的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。
目前,市场上有很多主流的消息中间件,如 ActiveMQ、RabbitMQ、Kafka、RocketMQ 等,它们各自有一些优势和劣势,大家可以根据自己的需求或目的有针对性地选择消息中间件。
消息中间件及其功能如表1所示。
目前大家经常使用的是 Kafka 和 RabbitMQ,其中:
另外,消息队列也称为消息中间件,通过利用高效的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。
目前,市场上有很多主流的消息中间件,如 ActiveMQ、RabbitMQ、Kafka、RocketMQ 等,它们各自有一些优势和劣势,大家可以根据自己的需求或目的有针对性地选择消息中间件。
消息中间件及其功能如表1所示。
名称 | 功能 |
---|---|
ActiveMQ | Apache 出品,一个能力强劲的开源消息总线,完全支持 JMS(Java Messaging Service,Java消息服务)规范,具有丰富的 API 和多种集群架构模式。 |
RabbitMQ |
使用 Erlang 语言开发的开源消息队列系统,基于 AMQP(Advanced Message Queuing Protocol,高级消息队列协议)的主要特征是面向消息、队列、路由、可靠性和安全。 AMQP 更多用在企业系统内对数据的一致性、稳定性和可靠性要求很高的场景,对性能吞吐量的要求不高。 |
Kafka | LinkedIn 开源的分布式消息订阅系统,目前归属 Apache 顶级开源项目,主要特点是基于 Pull 模式来处理消息消费,追求高吞吐量,一开始用于日志的收集和传输,适合大数据的数据收集业务。 |
RocketMQ |
阿里巴巴开源的消息中间件,纯 Java 开发,具有高吞吐量和高可用性,适合大规模分布式系统应用。 RocketMQ 的思路起源于 Kafka,但并不是 Kafka 的复制,它优化了消息的可靠存储和事务,目前在阿里集团广泛使用。 |
目前大家经常使用的是 Kafka 和 RabbitMQ,其中:
- Kafka 通常适用于高吞吐量的场景;
- RabbitMQ 通常适用于对可靠性要求高的场景。