1. 背景
- 最近有新同事接触了项目中使用的RocketMQ,问了一个问题:MQ有哪几种?
- 基于此,本文介绍一下目前市面上常用的消息队列(MQ)有哪些。
2. 五种主流消息队列(MQ)
2.1 RocketMQ
阿里系下开源的一款分布式、队列模型的消息中间件,原名Metaq,3.0版本名称改为RocketMQ。它参照kafka设计思想使用java语言实现,主要多用于订单交易系统。
2.2 RabbitMQ
使用Erlang语言编写的一个开源的消息队列,支持很多的协议,如AMQP,XMPP,SMTP,STOMP等。实现了Broker架构,对路由(Routing),负载均衡(Load balance)、数据持久化都有很好的支持。
2.3 ActiveMQ
Apache下的一个子项目,使用Java语言完全支持JMS1.1和J2EE 1.4规范的JMS Provider实现。可插拔的传输协议支持,比如:in-VM,TCP,SSL,NIO,UDP,multicast,JGroups and JXTA transports。
2.4 Kafka
Apache下的一个子项目,使用Scala语言实现的一个高性能、分布式Publish/Subscribe消息队列系统。具有快速持久化、高吞吐、高堆积、完全的分布式系统等特性。
2.5 ZeroMQ
ZeroMQ是一个分布式消息处理架构,是由C++语言实现的,后续支持了Java、C++、Python等多种编程语言的版本实现。可以保证严格的消息顺序,提供针对消息的过滤功能,提供丰富的消息拉取模式,高效的订阅者水平扩展能力,实时的消息订阅机制,亿级消息堆积能力。