先记录一点工作中的使用,后面自己有时间补上

基础至少

核心概念

概念 说明
Producer(生产者) 发送消息的客户端应用程序
Consumer(消费者) 接收消息的客户端应用程序
Broker RabbitMQ 服务节点/服务实例
Connection(连接) 客户端与 Broker 之间的 TCP 连接
Channel(信道) TCP 连接上的虚拟连接,用于复用 TCP 连接、减少开销
Queue(队列) 存储消息的数据结构,消息的容器
Exchange(交换机) 消息分发中心,接收生产者消息并按规则路由到队列
Binding(绑定) 交换机和队列之间的虚拟连接,绑定中可包含 Routing Key
Routing Key(路由键) 消息头的属性,决定交换机的转发路径
Virtual Host(虚拟主机) 逻辑隔离机制,类似 MySQL 的 database

工作流程:生产者 → 发送消息到 Exchange → Exchange 根据 Routing Key 和 Binding 规则 → 路由到对应 Queue → 消费者从 Queue 消费消息

⚠️ 重要:多个消费者订阅同一个队列时,每条消息只能被一个消费者消费,而非广播给所有消费者。

交换机类型(Exchange Types)

类型 路由规则 适用场景
Direct Routing Key 与 Binding Key 精确匹配 定向消息(如按日志级别分发)
Fanout 广播到所有绑定的队列,忽略 Routing Key 广播通知、多终端同步
Topic 通配符匹配:* 匹配一个单词,# 匹配零或多个单词 灵活路由(如按地区、角色过滤)
Headers 根据消息头属性匹配(不常用) 复杂路由规则

六种工作模式

模式 特点 适用场景
Simple(简单模式) 1 个生产者 → 1 个队列 → 1 个消费者 一对一简单通信
Work Queues(工作队列) 1 个队列 → 多个消费者竞争消费(默认轮询) 任务分发、负载均衡
Publish/Subscribe(发布订阅) Fanout 交换机广播到所有队列,每个队列对应一个消费者 日志广播、多系统同步
Routing(路由模式) Direct 交换机根据 Routing Key 精确路由 按类型定向分发
Topics(主题模式) Topic 交换机通过通配符模糊匹配 Routing Key 灵活过滤(如按区域/角色)
RPC(远程调用) 客户端发送请求并等待响应 同步远程调用

常用命令速查

服务管理

1
2
3
rabbitmq-server              # 前台启动(调试用)
rabbitmq-server -detached # 后台启动
rabbitmqctl stop # 停止服务

插件管理

1
2
rabbitmq-plugins list                           # 列出所有插件
rabbitmq-plugins enable rabbitmq_management # 启用 Web 管理界面

核心管理命令(rabbitmqctl)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
rabbitmqctl status                    # 查看节点状态
rabbitmqctl node_health_check # 健康检查

# 用户管理
rabbitmqctl add_user <用户名> <密码> # 添加用户
rabbitmqctl set_user_tags <用户> administrator # 设为管理员
rabbitmqctl list_users # 列出所有用户

# 虚拟主机
rabbitmqctl add_vhost <vhost名> # 添加虚拟主机
rabbitmqctl list_vhosts # 列出所有虚拟主机

# 队列
rabbitmqctl list_queues name messages consumers # 查看队列及消息数
rabbitmqctl purge_queue <队列名> # 清空队列消息

Web 管理界面:启用 rabbitmq_management 插件后,访问 http://HOST:15672,默认账号 guest/guest(仅限 localhost 访问)。

关键注意事项

  • 消息无法路由:若 Exchange 无法路由消息,mandatory=true 时返回生产者,false 时直接丢弃
  • 消息确认:生产环境务必开启消费者手动 ACK,避免消息丢失
  • 队列监控:关注 Ready(待消费)和 Unacked(已取未确认)数量,持续增长需及时处理
  • 安全:生产环境创建独立用户并设置权限,避免使用默认 guest 账号远程访问

集成springboot

依赖:

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
组成部分 含义
rabbitTemplate Spring 提供的 AMQP 消息发送模板,封装了连接创建、信道复用、异常处理等底层细节。
convertAndSend 意为 “转换并发送”。它会自动将 Java 对像序列化为字节流,再发布到 Broker。