RabbitMQ简单介绍
一.RabbitMQ介绍
RabbitMQ 是一款开源的 消息中间件(Message Broker),遵循 AMQP(Advanced Message Queuing Protocol) 协议标准,专为分布式系统提供高效、可靠的消息通信机制。它通过解耦生产者和消费者、异步处理、流量削峰等能力,成为构建复杂企业级应用的核心组件之一。
RabbitMQ通常用于通信系统通信,系统通信又分为两种:
-
同步通信:直接调用对方的服务,数据从一端发出后立即就可以达到另一端。
-
异步通信:数据从一端发出后,先进入一个容器进行临时存储,当达到某种条件后,再由这个容器发送给另一端(容器的一个具体实现就是MQ)
二.RabbitMQ的作用
MQ主要工作是接受并转发消息,在不同的应用场景下,可以展现不同的作用。
1.异步解耦
异步:生产者(发送消息的一方)和消费者(接收消息的一方)无需在同一时间点进行交互。生产者发送消息后即可继续执行后续逻辑,无需等待消费者处理完成。
解耦:生产者和消费者之间不直接依赖对方的接口或状态,而是通过消息队列间接通信。双方只需遵循消息协议,无需了解彼此的实现细节。
简单的举个栗子:
用户进行注册操作时,在这里分成3个步骤,第1个步骤是用户的信息校验,第2个步骤插入数据库,第3个步骤发送邮件。此时前两步已经完成了用户注册操作了,此时第三步就能够解耦出来,将第3步发送给MQ,再让MQ 将信息转发给用户的邮箱。
理解:
用户在前两步已经完成注册了,无论邮件是否能够到达用户的邮箱其实都不太重要,重要的是将用户注册的这个信息存入服务器的数据库当中。
2.流量削峰
流量削峰是 RabbitMQ 的核心应用场景之一,主要用于应对系统突发的高并发请求,避免后端服务因瞬时压力过大而崩溃。其核心思想是通过消息队列暂存请求,让后端服务按照自身处理能力逐步消费。
简单的举个栗子:
当在抢火车票时,点击火车票后提交订单,此时会出现正在排队中请勿退出界面这种弹窗,这种排队就是在使用流量削峰的功能。
3.消息分发
消息分发是 RabbitMQ 的核心能力,它决定了消息如何从生产者传递到消费者。其核心逻辑是:生产者将消息发送到交换机(Exchange),交换机根据规则(路由键、绑定关系)将消息路由到队列,消费者从队列中获取消息。
简单的举个栗子:
用户下了一个订单之后,平台需要向商家发送一个信息,也需要向平台的财部门发送信息,此时不使用MQ的消息分发就只能通过分别调用两个接口来进行消息的通知,并且还可能会涉及到轮询数据库的操作。
4.延迟通知
延迟通知是 RabbitMQ 中实现 定时任务 或 延迟触发业务逻辑 的核心功能,例如订单超时未支付自动取消、提醒消息延迟发送等。由于 RabbitMQ 本身不直接支持延迟队列,需通过 插件 或 死信队列(DLX) 间接实现。
简单举个栗子:
电商平台,用户下了订单之后,如果此时并没有对这个订单进行支付,此时就会有一个时间限制,如果超过这个时间限制,用户还没有对这个订单进行付款,此时这个订单就会自动取消。
三.RabbitMQ安装(Ubuntu)
1.先安装Erlang
首先先进行资源包的更新:sudo apt-get update
安装erlang的语言:sudo apt-get install erlang
检查erlang是否安装成功:erl
如果出现这个就是安装成功,并且通过 halt(). 进行退出,注意是有一个小点
2.安装RabbitMQ
安装RabbitMQ命令:sudo apt-get install rabbitmq-server
确认安装结果的命令:systemctl status rabbitmq-server
3.安装RabbitMQ的管理界面
安装管理界面的命令 rabbitmq-plugins enable rabbitmq_management
若服务器未启动,则启动命令 sudo service rabbitmq-server start
通过IP和port进行访问 公网IP + 15672进行访问,如果不行需要在云服务器上加安全组开放端口:
rabbitmq从3.3.0开始禁⽌使⽤guest/guest权限通过除localhost外的访问
添加管理员用户:
rabbitmqctl add_user {账号} {密码}
rabbitmqctl add_user admin(账号) admin(密码)

给用户添加权限:
rabbitmqctl set_user_tags {账号} {⻆⾊名称}
rabbitmqctl set_user_tags admin administrator
权限:
1.Administrator超级管理员,可登陆管理控制台(启⽤managementplugin的情况下),可查看所有的信息,并且可以对⽤⼾,策略(policy)进⾏操作
-
Monitoring监控者,可登陆管理控制台(启⽤managementplugin的情况下),同时可以查看rabbitmq节点的相关信息(进程数,内存使⽤情况,磁盘使⽤情况等)。
-
Policymaker策略制定者,可登陆管理控制台(启⽤managementplugin的情况下),同时可以对policy进⾏管理。但⽆法查看节点的相关信息.
-
Management普通管理者,仅可登陆管理控制台(启⽤managementplugin的情况下),⽆法看到节点信息,也⽆法对策略进⾏管理.
-
Impersonator模拟者,⽆法登录管理控制台。
-
None其他⽤⼾,⽆法登陆管理控制台,通常就是普通的⽣产者和消费者。
登录后的界面:
红色区域是可以点击来修改当前账号的管理权限等信息:
Add User则是可以添加新的账号和密码
4.创建虚拟机
进行添加一个新的虚拟机:
当前登录的用户是哪个,这个虚拟机的权限就是哪个用户的,通过点击Name可以进行删除:
可以通过用户来进行设置虚拟机权限:
或者通过虚拟机进行设置用户权限,clear是情况用户权限:
5.端口号信息
amqp 5672:客户端和服务器建立连接的端口号
Http 15672:管理界面的端口号
clustering 25672:集群使用的端口号

四.工作原理图
producer : 生产者(客户端)
consumer: 消费者(客户端)
中间的都是RabbitMQ的服务器
生产者和消费者通过Connection和RabbitMQ服务器进行连接。
一个Connection有多个Channel,一个Broker可以有多个虚拟机,Exchange是交换机,Queue是队列。
生产者将消息发送给Exchange(交换机),而不会直接发送给Queue(队列)。
