文章目录
- Ubuntu环境安装
-
- 一、安装Erlang
- 二、安装RabbitMQ
- 三、安装RabbitMQ管理界面
- 四、启动服务并访问
-
- [① 启动服务并且查看状态](#① 启动服务并且查看状态)
- [② 添加管理员用户并添加权限](#② 添加管理员用户并添加权限)
- [③ 通过 IP:port 访问界面](#③ 通过 IP:port 访问界面)
- RabbitMQ的使用和配置
-
- 一、相关服务操作
- 二、修改端口号
-
- [① 查找 rabbitmq 位置](#① 查找 rabbitmq 位置)
- [② 新增配置文件 rabbitmq.conf](#② 新增配置文件 rabbitmq.conf)
- [③ 修改 rabbitmq-defaults 文件,添加配置文件路径](#③ 修改 rabbitmq-defaults 文件,添加配置文件路径)
- 三、卸载RabbitMQ
-
- [① 停止RabbitMQ服务](#① 停止RabbitMQ服务)
- [② 查找RabbitMQ安装情况](#② 查找RabbitMQ安装情况)
- [③ 卸载rabbitmq已安装的相关内容](#③ 卸载rabbitmq已安装的相关内容)
- [④ 卸载Erlang](#④ 卸载Erlang)
- Windows操作RabbitMQ
- 前言
- 什么是MQ
- MQ的作用
- 为什么选择RabbitMQ
-
- [1. Kafka](#1. Kafka)
- [2. RocketMQ](#2. RocketMQ)
- [3. RabbitMQ](#3. RabbitMQ)
- RabbitMQ介绍

Ubuntu环境安装
一、安装Erlang
bash
RabbitMQ` 需要 `Erlang` 语言的支持,在安装 `RabbitMQ` 之前需要安装 `erlang
#更新软件包
sudo apt-get update
#安装erlang
sudo apt-get install erlang
查看erlang版本
bash
root@hcss-ecs-0bb1:~# erl
Erlang/OTP 22 [erts-10.6.4] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:1]
Eshell V10.6.4 (abort with ^G)
退出命令:
bash
halt()
二、安装RabbitMQ
bash
# 更新软件包
sudo apt-get update
# 安装rabbitmq
sudo apt-get install rabbitmq-server
# 确认安装结果
systemctl status rabbitmq-server
三、安装RabbitMQ管理界面
bash
root@hcss-ecs-0bb1:~# sudo rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@hcss-ecs-0bb1:
rabbitmq_management
The following plugins have been configured:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
Applying plugin configuration to rabbit@hcss-ecs-0bb1...
The following plugins have been enabled:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
started 3 plugins.
root@hcss-ecs-0bb1:~#
四、启动服务并访问
① 启动服务并且查看状态
bash
#启动rabbitmq
sudo service rabbitmq-server start
#查看状态
sudo systemctl status rabbitmq-server
② 添加管理员用户并添加权限
bash
sudo rabbitmqctl add_user 账号 your_password
sudo rabbitmqctl set_user_tags 密码 administrator
sudo rabbitmqctl set_permissions -p / 账号 ".*" ".*" ".*"
RabbitMQ 用户角色分为 Administrator、Monitoring、Policymaker、Management、Impersonator、None 共六种角色
Administrator:超级管理员,可登陆管理控制台(启用managementplugin的情况下),可查看所有的信息,并且可以对用户、策略(policy)进行操作。Monitoring:监控者,可登陆管理控制台(启用managementplugin的情况下),同时可以查看 rabbitmq 节点的相关信息(进程数,内存使用情况,磁盘使用情况等)Policymaker:策略制定者,可登陆管理控制台(启用managementplugin的情况下),同时可以对 policy 进行管理。但无法查看节点的相关信息。Management:普通管理者,仅可登陆管理控制台(启用managementplugin的情况下),无法看到节点信息,也无法对策略进行管理。Impersonator:模拟者,无法登录管理控制。None:其他用户,无法登陆管理控制台,通常就是普通的生产者和消费者。
③ 通过 IP:port 访问界面
http://云服务器地址:15672/,然后输入添加的账号密码即可!(15672为默认端口号,云服务器需要开启端口)
RabbitMQ的使用和配置
一、相关服务操作
bash
# 启动服务
sudo systemctl start rabbitmq-server
# 停止服务
sudo systemctl stop rabbitmq-server
# 重启服务
sudo systemctl restart rabbitmq-server
# 添加开机启动服务
sudo systemctl enable rabbitmq-server
# 检查服务状态
sudo systemctl status rabbitmq-server
二、修改端口号
① 查找 rabbitmq 位置
bash
[lucf@VM-8-12-centos ~]$ whereis rabbitmq
rabbitmq: /usr/lib/rabbitmq /etc/rabbitmq
② 新增配置文件 rabbitmq.conf
在 /etc/rabbitmq 路径下创建 rabbitmq.conf 文件,并添加以下内容:
bash
# 修改client端口为8942(默认为5672)
listeners.tcp.default=8942
# 修改管理界面端口为8943(默认为15672)
management.tcp.port=8943
③ 修改 rabbitmq-defaults 文件,添加配置文件路径
文件路径:/usr/lib/rabbitmq/lib/rabbitmq_server-3.8.30/sbin/rabbitmq-defaults
编辑 rabbitmq-defaults,在文本最后添加如下代码
bash
# 添加配置路径到文件中,保存退出
CONFIG_FILE=/etc/rabbitmq/rabbitmq.conf
三、卸载RabbitMQ
① 停止RabbitMQ服务
bash
sudo systemctl stop rabbitmq-server
② 查找RabbitMQ安装情况
bash
dpkg -l | grep rabbitmq
③ 卸载rabbitmq已安装的相关内容
bash
sudo apt-get purge --auto-remove rabbitmq-server
④ 卸载Erlang
-
查看erlang安装的相关列表
bashdpkg -l | grep erlang -
卸载erlang已安装的相关内容
bashsudo apt-get purge --auto-remove erlang
Windows操作RabbitMQ
将 RabbitMQ 可执行文件目录添加到环境变量中,方便下面指令执行,并且要用管理员身份执行!
bash
# 启动 RabbitMQ 服务(连同 Erlang)
net start RabbitMQ
# 停止 RabbitMQ 服务(完全关闭,包括 Erlang VM)
net stop RabbitMQ
# 设置 RabbitMQ 开机自启
sc config RabbitMQ start= auto
# 取消开机自启(手动启动)
sc config RabbitMQ start= demand
前言
Rabbit,兔子的意思
互联网行业很多公司,都喜欢用动物命名产品,或者作为公司的logo,吉祥物。比如:腾讯的企鹅,京东的狗,美团的袋鼠,携程的海豚,阿里就更多了,蚂蚁,飞猪,天猫,菜鸟,闲鱼,盒马...更是以一己之力,组建了一个动物园...
Rabbit 也是一个公司名。MQ(message queue)消息队列的意思,RabbitMQ 是 Rabbit 企业下的一个消息队列产品。
RabbitMQ 是一个实现了 AMQP 的消息队列服务,是当前主流的消息中间件之一。
AMQP ,即 Advanced Message Queuing Protocol(高级消息队列协议),是一个通用的应用层协议,提供统一消息服务的协议,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端或中间件、开发语言等条件的限制。
什么是MQ
MQ(Message queue),从字面意思上看,本质是个队列 ,FIFO 先入先出,只不过队列中存放的内容是消息(message)而已。消息可以非常简单,比如只包含文本字符串,JSON 等,也可以很复杂,比如内嵌对象。
MQ 多用于分布式系统之间进行通信。
系统之间的调用通常有两种方式:
-
同步通信
- 直接调用对方的服务,数据从一端发出后立即就可以达到另一端。

- 直接调用对方的服务,数据从一端发出后立即就可以达到另一端。
-
异步通信
-
数据从一端发出后,先进入一个容器进行临时存储,当达到某种条件后,再由这个容器发送给另一端。
-
容器的一个具体实现就是
MQ:

-
RabbitMQ 就是 MQ 的一种实现!
MQ的作用
MQ主要工作是接收并转发消息,在不同的应用场景下可以展现不同的作用
可以把
MQ想象成一个仓库。采购部门进货之后,把零件放进仓库里,生产部门从仓库中取出零件,并加工成产品。MQ和仓库的区别是,仓库里放的是物品,MQ里放的是消息,仓库负责存储物品,并转发物品,MQ负责存储和转发消息。
- 异步解耦:在业务流程中,一些操作可能非常耗时,但并不需要即时返回结果。可以借助MQ把这些操作异步化,比如用户注册后发送注册短信或邮件通知,可以作为异步任务处理,而不必等待这些操作完成后才告知用户注册成功。
- 流量削峰:在访问量剧增的情况下,应用仍然需要继续发挥作用,但是这样的突发流量并不常见。如果以能处理这类峰值为标准而投入资源,无疑是巨大的浪费。使用MQ能够使关键组件支撑突发访问压力,不会因为突发流量而崩溃。比如秒杀或者促销活动,可以使用MQ来控制流量,将请求排队,然后系统根据自己的处理能力逐步处理这些请求。
- 消息分发:当多个系统需要对同一数据做出响应时,可以使用MQ进行消息分发。比如支付成功后,支付系统可以向MQ发送消息,其他系统订阅该消息,而无需轮询数据库。
- 延迟通知:在需要在特定时间后发送通知的场景中,可以使用MQ的延迟消息功能,比如在电子商务平台中,如果用户下单后一定时间内未支付,可以使用延迟队列在超时后自动取消订单
- ...
为什么选择RabbitMQ
目前业界有很多的 MQ 产品,例如 RabbitMQ,RocketMQ,ActiveMQ,Kafka,ZeroMQ 等,也有直接使用 Redis 充当消息队列的案例,这些消息队列,各有侧重,也没有好坏,只有适合不适合,在实际选型时,需要结合自身需求以及 MQ 产品特征,综合考虑。
1. Kafka
Kafka 一开始的目的就是用于日志收集和传输,追求高吞吐量,性能卓越,单机吞吐达到十万级,在日志领域比较成熟,功能较为简单,主要支持简单的 MQ 功能,如果有日志采集需求,肯定首选 kafka。
2. RocketMQ
RocketMQ 采用 Java 语言开发,由阿里巴巴开源,后捐赠给了 Apache。
它在设计时借鉴了 Kafka,并做出了一些自己的改进,青出于蓝而胜于蓝,经过多年双十一的洗礼,在可用性、可靠性以及稳定性等方面都有出色的表现。适合对于可靠性比较高,且并发比较大的场景,比如互联网金融。但支持的客户端语言不多,且社区活跃度一般。
3. RabbitMQ
采用 Erlang 语言开发,MQ 功能比较完备,且几乎支持所有主流语言,开源提供的界面也非常友好,性能较好,吞吐量能达到万级,社区活跃度也比较高,比较适合中小型公司,数据量没那么大,且并发没那么高的场景。
RabbitMQ介绍
RabbitMQ 官网:RabbitMQ: One broker to queue them all | RabbitMQ
RabbitMQ 是采用 Erlang 语言实现 AMQP(Advanced Message Queuing Protocol,高级消息队列协议)的消息中间件,它最初起源于金融系统领域,为了在分布式系统中存储和转发消息而设计的。
在此之前,有一些消息中间件的商业实现,比如微软的 MSMQ(MicroSoft Message Queue),IBM 的 WebSphere 等。但是他们价格太贵了,一般只应用于大型组织机构。
RabbitMQ 开发始于2006年,是由 Rabbit Technologies 开发并且提供商业支持的。之所以取名为Rabbit,是因为兔子行动非常迅速且繁殖起来非常疯狂,RabbitMQ 的开创者认为这个名字再合适不过了。
2010年4月,Rabbit Technologies 被 VMware 旗下的 SpringSource 收购,在2013年5月被并入 Pivotal。
其实 VMware,Pivotal 本质上是一家的。不同的是,VMware 是独立上市子公司,而 Pivotal 是整合了 EMC 的某些资源,其中我们现在使用的 Spring 系列框架,就是 Pivotal 公司热门的产品之一。
直到后来 Pivotal 将其开源,RabbitMQ 才逐渐走向大众!
RabbitMQ 发展到今天,已经被越来越多的人认可,尤其是互联网公司,已经有着大规模的场景应用,这和它在易用性,扩展性,可靠性和高可用性等方面的卓越表现是分不开的。接下来我们就一起来深入了解一下 RabbitMQ。

