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。

  1. # 安装erlang
  2. $ rpm -Uvh https://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm
  3. $ yum install erlang

5、RabbitMQ安装

  1. # 下载rabbitmq
  2. $ wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.15/rabbitmq-server-3.6.15-1.el7.noarch.rpm
  3. # 安装rabbitmq
  4. $ yum install rabbitmq-server-3.6.15-1.el7.noarch.rpm

6、RabbitMQ配置

安装完成后,启动和查看rabbitmq服务

  1. # 启动rabbitmq服务
  2. $ service rabbitmq-server start
  3. # 查看rabbitmq服务状态
  4. $ service rabbitmq-server status

image.png

7、验证RabbitMQ启动状态

RabbitMQ日志文件位于/var/log/rabbitmq目录下,RabbitMQ启动时,会在/etc/rabbitmq下寻找rabbitmq.config文件,我们可以自己创建这个文件。
image.png

8、管理配置

图形管理UI可以通过命令启动,启动后可在浏览器输入地址http://ip:15672查看。
image.png

  • rabbitmq管理UI界面

image.png

  • 添加用户

RabbitMQ默认用户名和密码都是guest,并且只能在本地登录,远程无法登录,可以通过在配置文件rabbitmq.config中配置来允许在远程登录。

  1. # 配置guest远程访问
  2. [{rabbit, [{loopback_users, []}]}].
  • 添加新用户 ```bash

    添加用户

    rabbitmqctl add_user username password

为用户设置所有权限

rabbitmqctl set_permissions -p / username “.“ “.“ “.*”

设置用户为管理员

rabbitmqctl set_user_tags username administrator ```

  • 添加完成后可在管理UI界面登录

image.png