1、RabbitMQ介绍
RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。
2、RabbitMQ特点
RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。
AMQP :Advanced Message Queue,高级消息队列协议。它是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户端与消息中间件可传递消息,并不受产品、开发语言等条件的限制。
- 可靠性(Reliability)
RabbitMQ 使用一些机制来保证可靠性,如持久化、传输确认、发布确认。
- 灵活的路由(Flexible Routing)
在消息进入队列之前,通过 Exchange 来路由消息的。对于典型的路由功能,RabbitMQ 已经提供了一些内置的 Exchange 来实现。针对更复杂的路由功能,可以将多个 Exchange 绑定在一起,也通过插件机制实现自己的 Exchange 。
- 消息集群(Clustering)
多个 RabbitMQ 服务器可以组成一个集群,形成一个逻辑 Broker 。
- 高可用(Highly Available Queues)
队列可以在集群中的机器上进行镜像,使得在部分节点出问题的情况下队列仍然可用。
- 多种协议(Multi-protocol)
RabbitMQ 支持多种消息队列协议,比如 STOMP、MQTT 等等。
- 多语言客户端(Many Clients)
RabbitMQ 几乎支持所有常用语言,比如 Java、.NET、Ruby 等等。
- 管理界面(Management UI)
RabbitMQ 提供了一个易用的用户界面,使得用户可以监控和管理消息 Broker 的许多方面。
- 跟踪机制(Tracing)
如果消息异常,RabbitMQ 提供了消息跟踪机制,使用者可以找出发生了什么。
- 插件机制(Plugin System)
RabbitMQ 提供了许多插件,来从多方面进行扩展,也可以编写自己的插件。
3、文档适用范围
| 软件工具 | 支持版本 |
|---|---|
| Centos | 7.0+ |
| Erlang | |
| RabbitMQ | 3.0+ |
4、Erlang安装
RabbitMQ是由Erlang语言编写的,首先需要安装Erlang。
# 安装erlang$ rpm -Uvh https://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm$ yum install erlang
5、RabbitMQ安装
# 下载rabbitmq$ wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.15/rabbitmq-server-3.6.15-1.el7.noarch.rpm# 安装rabbitmq$ yum install rabbitmq-server-3.6.15-1.el7.noarch.rpm
6、RabbitMQ配置
安装完成后,启动和查看rabbitmq服务
# 启动rabbitmq服务$ service rabbitmq-server start# 查看rabbitmq服务状态$ service rabbitmq-server status
7、验证RabbitMQ启动状态
RabbitMQ日志文件位于/var/log/rabbitmq目录下,RabbitMQ启动时,会在/etc/rabbitmq下寻找rabbitmq.config文件,我们可以自己创建这个文件。
8、管理配置
图形管理UI可以通过命令启动,启动后可在浏览器输入地址http://ip:15672查看。

- rabbitmq管理UI界面

- 添加用户
RabbitMQ默认用户名和密码都是guest,并且只能在本地登录,远程无法登录,可以通过在配置文件rabbitmq.config中配置来允许在远程登录。
# 配置guest远程访问[{rabbit, [{loopback_users, []}]}].
为用户设置所有权限
rabbitmqctl set_permissions -p / username “.“ “.“ “.*”
设置用户为管理员
rabbitmqctl set_user_tags username administrator ```
- 添加完成后可在管理UI界面登录

