博客 Ubuntu 环境安装 之 RabbitMQ 快速入手

Ubuntu 环境安装 之 RabbitMQ 快速入手

   数栈君   发表于 2025-01-07 14:51  225  0

前言

Rabbit, 兔子的意思
互联网行业很多公司, 都喜欢用动物命名产品, 或者作为公司的logo, 吉祥物. 比如: 腾讯的企鹅, 京东的狗, 美团的袋鼠, 携程的海豚,阿里就更多了, 蚂蚁, 飞猪,天猫,菜鸟, 闲鱼, 盒马… 更是以一己之力, 组建了一个动物园…
Rabbit 也是⼀个公司名. MQ ( message queue ) 消息队列 的意思 , RabbitMQ 是 Rabbit企业下的⼀个消息队列产品.
RabbitMQ 是⼀个实现了 AMQP 的 消息队列 服务,是当前主流的消息中间件之⼀.

AMQP,即Advanced Message Queuing Protocol(⾼级消息队列协议),是⼀个通⽤的应⽤层协议,提供统⼀消息服务的协议, 为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端或中间件, 开发语言等条件的限制。

在互联网架构中, 会经常使用MQ来作为消息通信服务. 接下来我们看下什么是MQ


一、什么是MQ(消息队列)

MQ( Message queue ), 从字面意思上看, 本质是个队列, FIFO 先⼊先出,只不过队列中存放的内容
是消息(message)⽽已. 消息可以非常简单,比如只包含文本字符串, JSON等,也可以很复杂, 比如内嵌对象.
在日常生活中,例如:手机、水杯…可能会进行一些排队摆放
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/0f2b938c43b49904fce6c4df01edc9bc..png



MQ多用于分布式系统之间进行通信
系统之间的调用通常有两种方式:
同步通信:
直接调用对方的服务, 数据从一端发出后立即就可以达到另⼀端
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/f742cda1e9c6656bd0080c34965bc8ed..png



异步通信:
数据从⼀端发出后,先进入⼀个容器进行临时存储,当达到某种条件后,再由这个容器发送给另⼀端.
容器的⼀个具体实现就是MQ( message queue )

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/5eabba51e9e687c24ebd0173867c953b..png


RabbitMQ 就是MQ的⼀种实现

例如:
打电话客服直接响应
客服记录下来,过一段时间(24小时)内进行回复

二、MQ的作用

MQ主要工作是接收并转发消息, 在不同的应用场景下可以展现不同的作用

可以把MQ想象成一个仓库. 采购部门进货之后, 把零件放进仓库里
生产部门从仓库中取出零件, 并加工成产品.
MQ和仓库的区别是, 仓库里放的是物品, MQ里放的是消息
仓库负责存储物品,并转发物品,MQ负责存储和转发消息

1、异步解耦

在业务流程中, ⼀些操作可能非常耗时, 但并不需要即时返回结果. 可以借助MQ把这些操作异步化, 比如用户注册后发送注册短信或邮件通知, 可以作为异步任务处理, 而不必等待这些操作完成后才告知用户注册成功

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/127fe6b59c22e42fe1b1f904a378fb30..png


2、流量削峰

在访问量剧增的情况下, 应用仍然需要继续发挥作用, 但是这样的突发流量并不常见. 如果以能处理这类峰值为标准而投入资源,无疑是巨大的浪费. 使用MQ能够使关键组件支撑突发访问压力, 不会因为突发流量而崩溃. 比如秒杀或者促销活动, 可以使用MQ来控制流量, 将请求排队, 然后系统根据自己的处理能力逐步处理这些请求.
例如:12306 节假日的时候进行买票(不可能在这个时候买入多台机器)
商场人多的时候进行排队

3、消息分发

当多个系统需要对同⼀数据做出响应时, 可以使用MQ进行消息分发. 比如支付成功后, 支付系统可以向MQ发送消息, 其他系统订阅该消息, 而无需轮询数据库.

4、延迟通知

在需要在特定时间后发送通知的场景中, 可以使用MQ的延迟消息功能, 比如在电⼦商务平台中,如果用户下单后⼀定时间内未⽀付,可以使用延迟队列在超时后自动取消订单
例如:会议时间提前通知



三、为什么选择 RabbitMQ

⽬前业界有很多的MQ产品, 例如RabbitMQ, RocketMQ, ActiveMQ, Kafka, ZeroMQ等, 也有直接使用Redis充当消息队列的案例, 这些消息队列, 各有侧重, 也没有好坏, 只有适合不适合, 在实际选型时, 需要结合自身需求以及MQ产品特征, 综合考虑

以下我们介绍⼀下当前最主流的3种MQ产品

1、Kafka

Kafka⼀开始的目的就是用于日志收集和传输,追求高吞吐量, 性能卓越, 单机吞吐达到⼗万级, 在日志领域比较成熟, 功能较为简单,主要⽀持简单的 MQ 功能, 如果有⽇志采集需求,肯定是首kafka了。

2、RocketMQ

RocketMQ采⽤Java语⾔开发, 由阿⾥巴巴开源, 后捐赠给了Apache.
它在设计时借鉴了Kafka,并做出了⼀些自己的改进, ⻘出于蓝⽽胜于蓝, 经过多年双⼗⼀的洗礼, 在
可⽤性、可靠性以及稳定性等⽅⾯都有出⾊的表现. 适合对于可靠性⽐较⾼,且并发⽐较⼤的场景, ⽐
如互联⽹⾦融. 但⽀持的客户端语⾔不多, 且社区活跃度⼀般

3、RabbitMQ

采⽤Erlang语言开发, MQ 功能⽐较完备, 且几乎⽀持所有主流语言,开源提供的界面也非常友好, 性能较好, 吞吐量能达到万级, 社区活跃度也⽐较高,比较适合中小型公司, 数据量没那么大, 且并发没
那么高的场景.

四、RabbitMQ 快速上手

接下来我们来进行RabbitMQ的安装, 并进行入门程序的演示,让大家对于RabbitMQ有⼀个更加直观的感受.
RabbitMQ 是⼀套开源的消息队列服务软件, 基于 Erlang 语言编写, 所以安装RabbitMQ之前, 需要先安装部署 Erlang 环境, 再安装 RabbitMQ 环境.

RabbitMQ大多部署在Linux操作系统

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/98ba70a020ae6fa22d9ca9626036067c..png


1、Ubuntu 环境安装

RabbitMQ已经包含在标准的Ubuntu仓库中, 然而,包含的版本通常比最新的RabbitMQ发⾏版落后很多,可能提供的RabbitMQ版本已经不⽀持. RabbitMQ团队制作了自己的软件包,并使Cloudsmith
进行分发

具体操作可以参考: https://www.rabbitmq.com/docs/install-debian
由于该种方法安装比较复杂, 学习阶段, 咱们使⽤Ubuntu仓库中的版本来安装

2、安装Erlang

RabbitMq需要Erlang语言的支持,在安装rabbitMq之前需要安装erlang
#更新软件包
sudo apt-get update
#安装erlang
sudo apt-get install erlang

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/b29bfd584ea63b212add8a45da44d292..png



http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/0da059bba5f7f35cb1183e30f09f5514..png


22 以上的版本会出现以下这个界面 这个时候按Esc键就行


http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/8a3fb4b9160e488ed1386d11b8e1c3ff..png



出现以下界面就好了
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/daf4aef3433f5c64e1848aa74be146d7..png



3、查看erlang版本

root@hcss-ecs-0bb1:~# erl
Erlang/OTP 22 [erts-10.6.4] [source] [64-bit] [smp:2:2] [ds:2:2:10] [asyncthreads:1]
Eshell V10.6.4 (abort with ^G)

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/fb52414d69d67e1209581aa3bea0c229..png

退出命令 halt().

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/6821dd248fc72ab45943f01419c2f469..png


Ctrl + c 也能退出

五、安装RabbitMQ

1、安装

#更新软件包
sudo apt-get update
#安装rabbitmq
sudo apt-get install rabbitmq-server
#确认安装结果
systemctl status rabbitmq-server

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/9dc1abf8a1bf19ef2943536d06cc5ccd..png



这里也会出现紫色的,跟上面操作一样 按 Esc 键

2、确认安装结果

表示安装成功

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/0bf1efce2ba2c1b477a7f3a08baf2b76..png


六、安装RabbitMQ管理界面

默认是不安装管理界⾯的
root@hcss-ecs-0bb1:~# rabbitmq-plugins enable rabbitmq_management
#启动3个插件


http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/f72f16be309a8f0ae24b470da0dd1e03..png


七、启动服务并访问

1、通过 IP:port 访问界面

http://110.41.51.65:15672/ (15672 为默认端⼝号, 云服务器需要开启端⼝))
默认⽤户名和密码都是: guest
rabbitmq从3.3.0开始禁⽌使⽤guest/guest权限通过除localhost外的访问, 解除方法也有

对阿里云的服务器的防火墙进行设置

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/e52dfb8635da9edbc087b8fbd796a01b..png



http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/8c1d70275876b21ce4be32c2eb3968ba..png

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/e3577f695106323cb5a92940fd9f3383..png



2、添加管理员用户

添加用户 admin , 密码: admin
# rabbitmqctl add_user ${账号} ${密码}
rabbitmqctl add_user admin admin


3、给用户添加权限

#rabbitmqctl set_user_tags ${账号} ${角⾊名称}
rabbitmqctl set_user_tags admin administrator

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/a18783d127f5fa17856cac6f7c19e8dd..png

  1. Administrator 超级管理员,可登陆管理控制台(启⽤management plugin的情况下),可查看所
  2. 有的信息,并且可以对⽤户,策略(policy)进⾏操作
  3. Monitoring 监控者,可登陆管理控制台(启⽤management plugin的情况下),同时可以查看
  4. rabbitmq节点的相关信息(进程数,内存使⽤情况,磁盘使⽤情况等)。
  5. Policymaker 策略制定者,可登陆管理控制台(启⽤management plugin的情况下),同时可以对
  6. policy进⾏管理。但⽆法查看节点的相关信息.
  7. Management 普通管理者,仅可登陆管理控制台(启⽤management plugin的情况下),⽆法看到
  8. 节点信息,也⽆法对策略进⾏管理.
  9. Impersonator 模拟者,⽆法登录管理控制台。
  10. None 其他⽤户,⽆法登陆管理控制台,通常就是普通的⽣产者和消费者


4、通过IP:port访问, 并使用刚才设置的用户名和密码登录

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/ad263ba049dad31b556a2e5592d43485..png


重点了解
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/10e02106b6d916ba04523ede6cbb49db..png


这里的虚拟机是一个逻辑上的隔离 类似于 mysql 的database
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/8c55ad97f7a04448c0c622359e3d09a1..png


5、通过set设置权限


http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/267cb81ed6ac3ab55a4fe81267aa2f5c..png


6、添加用户

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/a4697df6b9ebb4abd14eaf8768514d3f..png


添加成功

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/63ef099b3bfe6b16ca690277e740b741..png

7、添加虚拟机

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/fbaf000f0c11c38ca2433c43ee5ef385..png


http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/a37e4c9537af9531601f0ede7583369e..png


使用哪个用户的设置的虚拟机,就对这个有一定的权限

本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!

《数据资产管理白皮书》下载地址:https://www.dtstack.com/resources/1073/?src=bbs

《行业指标体系白皮书》下载地址:https://www.dtstack.com/resources/1057/?src=bbs

《数据治理行业实践白皮书》下载地址:https://www.dtstack.com/resources/1001/?src=bbs

《数栈V6.0产品白皮书》下载地址:https://www.dtstack.com/resources/1004/?src=bbs

想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=bbs

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:https://github.com/DTStack

0条评论
上一篇:Kafka 基础入门
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料
钉钉扫码加入技术交流群