起步
简介
RabbitMQ 是一个广泛使用的消息服务器,采用 Erlang 语言编写,是一种开源的实现 AMQP(高级消息队列协议)的消息中间件
MQ:message queue(消息队列)
消息中间件:简单来说就是一个保存数据的容器(服务器),可以用于两个服务之间的通信
一般消息中间件都有三个角色:生产者 --- 消息代理(队列) --- 消费者

应用场景:异步处理、系统解耦、流量削峰、日志处理
常用命令
rabbitmqcli 是一个管理命令,可以管理 rabbit 的操作
输入命令
rabbitmqcli help
查看有哪些操作输入命令
rabbitmqcli help 子命令
查看具体操作以下所有命令前面加上
rabbitmqcli
如果是Docker部署需要进入容器内进行执行命令:
docker exec -it rabbitmq bash
用户
查看当前用户列表:list_users
创建一个账户:add_user [username] [password]
设置用户角色:set_user_tags [username] [tag]
- 设置为管理员角色:
rabbitmqctl set_user_tags [username] administrator
设置用户权限:set_permissions -p / [username] ".*" ".*" ".*"
- 以上设置用户拥有操作虚拟机的所有权限
查看所有用户的权限:list_permissions
WEB后台管理
在RabbitMQ中是存在UI界面的后台的,可以不需要输入命令也能做出相同的效果。WEB后台界面是以插件的形式存在的
开启界面:进入 MQ 的 sbin 目录下,然后执行 rabbitmq-plugins enable rabbitmq_management
开启界面
默认账密:guest
查看插件列表:rabbitmq-plugins list
启用或者关闭某个插件:rabbitmq-plugins [enable/disable] [插件名]
名词
虚拟主机(Virtual host):一个虚拟分组,在代码中就是一个字符串,当多个不同的用户使用同一个 RabbitMQ 服务时,可以划分出多个 Virtual host ,每个用户在自己的 Virtual host 创建 Exchange/queue 等
交换机(Exchange):交换机负责从生产者接受消息,并根据交换机的类型分发到对应的消息队列中,起到一个路由的作用
路由键(Routing Key):交换机根据路由键来决定消息分发到哪个队列,路由键是消息的目的地址
绑定(Binding):绑定是队列和交换机的一个关联连接(关联关系)
队列(Queue):存储消息的缓存
消息(Message):有生产者通过 RabbitMQ 发送给消费者的信息;(消息可以是任何数据,如:字符串、对象、JSON串等)
工作模型

Broker相当于MySQL服务器;Virtual host相当于数据库(可以有多个数据库);queue相当于表;消息相当于记录
要素
消息队列的三个核心要素:生产者、消息队列、消费者
生产者(producer):发送消息的应用
消费者(consumer):接受消息的应用
代理(broker):就是消息服务器,RabbitMQ Server就是Message Broker
连接(connection):连接RabbitMQ的TCP长连接
信道(channel):连接中的一个虚拟通道。消息队列发送或者接受消息时都是通过信道进行的
虚拟主机(virtual host):一个分组,在代码中就是一个字符串。当不通的用户使用同一个RabbitMQ时可以划分出多个虚拟主机,每个用户可以在自己的虚拟主机中创建交换机/队列等
交换机(exchange):负责从生产者里接收消息,并根据交换机类型分发到对应的消息队列中,起到路由的的作用
路由键(routing key):交换机就是根据路由键来确定要把消息分发到哪个队列中,路由键是消息的目的地址
绑定(binging):绑定是队列和交换机之间的一种关联关系
队列(queue):存储消息的缓存
消息(message):由生产者通过MQ发送给消费者的信息(可以是任何数据,字符串、JSON、对象等)
依赖
采用Spring Boot:3.1.5
依赖
<!-- RabbitMQ -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit-test</artifactId>
<scope>test</scope>
</dependency>
配置
spring:
rabbitmq:
# 主机
host:
# 端口
port:
# 用户名
username:
# 密码
password:
# 虚拟主机(默认为/)
virtual-host:
正常情况下连接RabbitMQ的端口为 5672。15672是RabbitMQ的WEB管理界面