一、什么是 RabbitMQRabbitMQ 是一个基于Erlang语言开发的开源消息通信中间件实现了AMQP高级消息队列协议标准。它的核心功能是异步通信允许生产者和消费者之间通过队列传递消息从而实现系统解耦、流量削峰和任务异步处理。二、RabbitMQ 核心架构概念在正式操作之前我们先来熟悉 RabbitMQ 的几个核心概念这些是理解后续所有操作的基础。概念说明Publisher生产者发送消息的一方Consumer消费者接收并处理消息的一方Queue队列存储消息的缓冲区生产者投递的消息暂存于此等待消费者拉取Exchange交换机负责消息路由决定将生产者发送的消息投递到哪个队列Virtual Host虚拟主机提供隔离环境每个虚拟主机拥有独立的 Exchange、Queue 和权限体系 架构示意图一个 Exchange 可以绑定多个 Queue一个 Queue 也可以绑定多个 Exchange。三、快速安装Docker 方式使用 Docker 可以快速搭建 RabbitMQ 环境尤其适合开发和测试阶段。3.1 拉取镜像并运行执行以下命令启动一个带管理控制台的 RabbitMQ 容器docker run \ -e RABBITMQ_DEFAULT_USERitheima \ -e RABBITMQ_DEFAULT_PASS123321 \ -v mq-plugins:/plugins \ --name mq \ --hostname mq \ -p 15672:15672 \ -p 5672:5672 \ --network hmall \ -d \ rabbitmq:3.8-management3.2 端口说明端口用途15672RabbitMQ 管理控制台 Web 访问端口5672消息收发AMQP 协议端口安装完成后浏览器访问http://你的IP:15672使用上面配置的用户名和密码登录即可。四、管理控制台初探登录后你会看到如下总览页面页面顶部有五个核心选项卡Overview全局概览连接数、队列数、消息速率等Connections查看当前客户端连接Channels查看通道状态Exchanges管理交换机Queues管理队列Admin用户和虚拟主机管理五、实战收发消息完整流程接下来我们通过控制台完整走一遍消息发送与接收的流程。5.1 查看已有交换机切换到Exchanges选项卡可以看到系统默认创建了多个交换机如amq.direct、amq.fanout、amq.topic等。 这些交换机在安装时自动生成用于不同路由模式。5.2 创建队列切换到Queues选项卡点击Add a new queue参数示例值说明Virtual host/队列所属虚拟主机TypeClassic队列类型Namehello.queue1队列名称DurabilityDurable持久化重启后保留Auto deleteNo是否自动删除以同样的方式再创建一个hello.queue2。5.3 绑定交换机和队列交换机本身不存储消息它只负责将消息路由到绑定的队列。因此我们需要手动建立绑定关系。进入Exchanges→ 点击amq.fanout交换机切换到Bindings选项卡在Add binding from this exchange区域填写To queuehello.queue1Routing key*fanout 类型忽略该字段点击Bind重复步骤将hello.queue2也绑定到该交换机。5.4 发送消息再次进入amq.fanout交换机详情页切换到Publish message选项卡Routing key留空或填写任意值fanout 不关心Payload填写消息内容例如hello world点击Publish message发送。5.5 查看消息到达回到Queues页面可以看到hello.queue1和hello.queue2的Ready列都变成了1说明消息已成功到达两个队列。点击队列名称进入详情页再点击Get messages即可查看和消费消息。六、数据隔离Virtual Host 与用户管理在企业实际应用中多个项目往往共用一套 RabbitMQ 集群。为了保证数据安全和环境隔离我们需要借助Virtual Host和用户权限管理。6.1 用户管理在Admin→Users页面可以看到当前所有用户。每个用户具备不同的Tags角色标签其中administrator为超级管理员。‍ 最佳实践为每个项目创建独立用户限制其仅能访问对应的 Virtual Host。6.2 创建 Virtual Host以管理员身份登录后进入Admin→Virtual Hosts点击Add a new virtual host填写名称如/hmall创建后再回到Users页面可以为特定用户配置该虚拟主机的访问权限。6.3 切换 Virtual Host 观察隔离效果右上角点击 Virtual Host 下拉菜单切换为/hmall再进入Queues页面你会发现之前的hello.queue1等队列已不可见。✅ 这说明 Virtual Host 实现了完美的环境隔离不同项目之间的 Exchange 和 Queue 互不干扰。七、核心概念深度梳理 交换机类型Exchange Types类型说明Direct精确匹配 Routing Key点对点Fanout广播模式消息发送给所有绑定队列Topic通配符匹配 Routing Key灵活路由Headers根据消息 Headers 属性匹配较少使用 队列核心参数参数作用Durable持久化队列Broker 重启后队列依然存在Auto Delete自动删除当最后一个消费者取消订阅后删除队列Message TTL消息存活时间超时自动删除Max Length队列最大消息数量超出后移除头部消息Dead Letter Exchange死信交换机处理无法消费的消息