1. 简介
RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现。AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有很多公开标准(如 COBAR的 IIOP ,或者是 SOAP 等),但是在异步消息处理中却不是这样,只有大企业有一些商业实现(如微软的 MSMQ ,IBM 的 Websphere MQ 等),因此,在 2006 年的 6 月,Cisco 、Redhat、iMatix 等联合制定了 AMQP 的公开标准。
RabbitMQ是由RabbitMQ Technologies Ltd开发并且提供商业支持的。该公司在2010年4月被SpringSource(VMWare的一个部门)收购。在2013年5月被并入Pivotal。其实VMWare,Pivotal和EMC本质上是一家的。不同的是VMWare是独立上市子公司,而Pivotal是整合了EMC的某些资源,现在并没有上市。
RabbitMQ官网:http://www.rabbitmq.com
AMQP协议介绍:https://baike.baidu.com/item/AMQP/8354716?fr=aladdin
注意:RabbitMQ是采用erlang语言开发的,所以必须有erlang环境才可以运行。
Erlang编程语言最初目的是进行大型电信交换设备的软件开发,是一种适用于大规模并行处理环境的高可靠性编程语言。随着多核处理器技术的日渐普及,以及互联网、云计算等技术的发展,该语言的应用范围也有逐渐扩大之势。
Erlang— 初衷理念实现抗高并发语言
百度百科介绍:https://baike.baidu.com/item/Erlang%E8%AF%AD%E8%A8%80/20864044?fr=aladdin
2. 几种主流MQ的对比
ActiveMQ | RabbitMQ | Kafka | |
---|---|---|---|
优点 | 遵循JMS规范,安装方便 | 集成Erlang天生的并发性,最初用于金融行业,稳定性和安全性有保障 | 依赖Zookeeper,可动态扩展节点,高性能、高吞吐量、无限扩容、消息可指定追溯 |
缺点 | 有可能会丢失消息。现在的中心是下一代产品apollo上,所以5.x的产品不怎么维护了 | Erlang语言难度较大,不支持动态扩展 | 严格的顺序机制,不支持消息优先级,不支持标准的消息协议,不利于平台迁移 |
支持协议 | AMQP,OpenWire,Stomp,XMPP | AMQP | |
应用 | 适用于中小企业,不适合千个队列的应用 | 适合对稳定性要求高的企业及应用 | 应用在大数据日志处理或对实时性,可靠性(少量数据丢失)要求比较低的场景应用 |
3. RabbitMQ的安装
安装RabbitMQ有两个主要步骤:
- 安装Erlang语言
- Scot(Rabbit环境需要Scot)
- 安装Rabbit
Linux下参考:《在linux下安装配置rabbitMQ详细教程》
Mac下参考:《MacOS下安装RabbitMQ》
Windows下参考:《Windows 下安装RabbitMQ服务器及基本配置》
我的系统是MacOS,安装界面如下:
安装成功后:
进入rabbitmq的安装目录:
/usr/local/Cellar/rabbitmq/3.8.2/sbin
启动RabbitMQ:
./rabbitmq-server
启动成功后,浏览器输入(账号密码都是guest
):http://localhost:15672
附录(Mac下RabbitMQ相关的命令):
1.安装
shell brew install rabbitmq
2.启动及关闭RabbitMQ服务(进入安装目录的sbin目录后操作)
- 2.1前台启动
shell sudo ./rabbitmq-server
或
shell sudo /usr/local/Cellar/rabbitmq/3.7.7_1/sbin/rabbitmq-server-detacted
- 2.2 后台启动:
shell sudo ./rabbitmq-server -detached
3.后台关闭
shell sudo ./rabbitmqctl stop