当前位置: 首页 > news >正文

5分钟搞定RabbitMQ!Docker一键安装 + 核心概念图解

🔥个人主页:代码不加冰(欢迎来访)
🎬作者简介:java后端学习者
❄️个人专栏:LeetCode刷题日记 , 苍穹外卖日记,SSM框架深入,JavaWeb,
命运的结局尽可永在,不屈的挑战却不可须臾或缺!

前言:

大家好我是代码不加冰,前面我们刚初步认识了Docker,这里就用Docker来尝试安装一下RabbitMQ,并同时初步认识一下RabbitMQ。


前提:已经装好 Docker Desktop

没装的话先装:

  • Windows/macOS:上 docker.com 下载 Docker Desktop 安装

  • Linux (Ubuntu)sudo apt install docker.io

安装完后重启电脑,确保 Docker 图标在任务栏/菜单栏跑着。

如果有不清楚的,可以看我前面的文章,有具体步骤:Windows 保姆级 Docker 安装教程(WSL2 版),一篇入门docker


安装 RabbitMQ

打开终端(CMD、PowerShell 或 Terminal),执行:

bash docker run -d \ --name rabbitmq \ -p 5672:5672 \ -p 15672:15672 \ -e RABBITMQ_DEFAULT_USER=admin \ -e RABBITMQ_DEFAULT_PASS=admin123 \ rabbitmq:management

如果是在Windows 的 CMD里,改成一行(去掉\):

cmd docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin123 rabbitmq:management

等待镜像下载完成(会出现一长串容器ID)。


验证是否成功

浏览器打开:http://localhost:15672

登录:

  • 用户名:admin

  • 密码:admin123

自己设置即可

看到管理界面 →成功


日常常用命令
操作命令
停止docker stop rabbitmq
启动docker start rabbitmq
重启docker restart rabbitmq
删掉重来docker rm -f rabbitmq
查看日志(出错时用)docker logs rabbitmq

RabbitMQ 整体架构

生产者 (Producer) RabbitMQ 服务器 消费者 (Consumer) │ │ │ │ ┌─────────────────────────────────────┐ │ │ │ Exchange (交换机) │ │ ├──────┼──────────→│ │ │ │ │ │ 根据 Routing Key │ │ │ │ │ 路由到 Queue │ │ │ │ └───────────┬─────────────┘ │ │ │ │ │ │ │ ┌───────────▼─────────────┐ │ │ │ │ Queue (队列) │ │ │ │ │ 存储消息 │ │ │ │ └───────────┬─────────────┘ │ │ │ │ │ │ │ ├──────────────────────┤ │ │ │ 消费消息 │ │ │ │ │ │ └─────────────────────────────────────────────────┘

核心概念
概念英文通俗解释生活类比
生产者Producer发送消息的程序寄快递的人
消费者Consumer接收消息的程序收快递的人
队列Queue存消息的"信箱"快递柜
交换机Exchange决定消息去哪儿的"分拣员"快递分拣中心
绑定Binding交换机和队列之间的"路线图"分拣规则

管理界面

访问http://localhost:15672,登录后,我们逐个区域看:

1. Overview(概览)页面 - 登录后默认看到的

┌───────────────────────────────────────────────────────┐ │ RabbitMQ Management │ ├─────────────────────────────────────────────────────────┤ │ Overview | Connections | Channels | Exchanges │ │ Queues | Admin │ ├─────────────────────────────────────────────────────────┤ │ │ │ Totals: │ │ ┌─────────────┬─────────────┬─────────────┐ │ │ │ Queues: 0 │ Exchanges:7 │ Connections:0│ │ │ │ (你创建的) │ (系统自带的) │ (当前连接) │ │ │ └─────────────┴─────────────┴─────────────┘ │ │ │ │ Node: rabbit@... (你的节点) │ │ │ └─────────────────────────────────────────────────────────┘

重点看

  • Queues:你创建的队列数量(刚开始是 0)

  • Exchanges:交换机数量(有 7 个默认的)

  • Connections:当前有多少客户端连接


2. Exchanges(交换机)页面 - 点击顶部 "Exchanges"

这里显示所有交换机,重点关注这几个默认的:

交换机名称类型作用
(AMQP default)direct默认交换机,直接用队列名发消息
amq.directdirect直连型,精确匹配
amq.topictopic主题型,模糊匹配
amq.fanoutfanout广播型,发给所有队列
amq.headersheaders头匹配型(较少用)

你可以做的实验

  • 点击amq.fanout→ 查看绑定(Bindings)

  • 点击 "Add a new exchange" 创建一个自定义交换机


3. Queues(队列)页面 - 点击顶部 "Queues"

刚开始是空的(没有队列)。你需要:

  1. 创建一个队列:点击 "Add a new queue"

  2. 填写队列名称(比如my_queue

  3. 其他保持默认,点击 "Add queue"

创建成功后,点击队列名称进入详情页,可以看到:

  • Messages:消息统计(ready/未消费,unacked/已取未确认)

  • Bindings:这个队列绑定了哪些交换机

  • Publish message:可以手动发消息测试


4. Admin(管理)页面 - 点击顶部 "Admin"

这里管理用户、虚拟主机等:

标签页作用
Users管理用户(你创建的 admin 在这里)
Virtual Hosts虚拟主机(隔离环境,类似数据库的 schema)
Policies策略(队列TTL、镜像等)
Limits系统限制(就是刚才你问的 file descriptor 那里)

一个完整的消息流程

假设你有一个队列叫my_queue,一个交换机叫my_exchange

步骤 1: 创建队列 Queues → Add a new queue → 名称: my_queue



步骤 2: 创建交换机 Exchanges → Add a new exchange → 名称: my_exchange, 类型: direct
步骤 3: 绑定(告诉交换机,消息送到哪个队列) 点击 my_exchange → Bindings → To queue: my_queue, Routing key: my_key → Bind


步骤 4: 发送消息 点击 my_exchange → Publish message → Routing key: my_key, Payload: Hello World → Publish
步骤 5: 查看消息 点击 Queues → my_queue → 可以看到 "Messages ready: 1"


步骤 6: 消费消息 在 my_queue 详情页 → Get messages → Get


消息的生命周期

text 生产者发送消息 │ ▼ 到达交换机 ──→ 没有匹配队列 → 消息丢失(根据配置可能被返回) │ │ 有绑定 ▼ 进入队列 │ ├──→ 等待消费者(状态: ready) │ ▼ 消费者取走消息(状态: unacked) │ ├──→ 消费者返回 ack(确认)→ 消息删除 │ └──→ 消费者失联/不 ack → 消息重新入队

数据隔离的测试:

我们先添加一个user

可以发现这里是没有可以访问的虚拟主机

然后我们重新登,用我们刚创建的user

在这里我们不能改变消息的

这里能看到队列也是我们设置的权限足够高,超级管理员的权限。

我们创建自己的虚拟主机:

在这里我们可以进行一系列操作,实现数据隔离

  • 不同 vhost 之间完全隔离,互不可见

  • 同一个名字的队列可以在不同 vhost 中同时存在

  • 用户可以被授予不同 vhost 的访问权限

http://www.gsyq.cn/news/1450540.html

相关文章:

  • 全国哪家台球厅设计公司的口碑较好? - myqiye
  • 985计算机水硕,转大模型应用开发的感悟
  • 圆偏振光+磁控溅射AR膜实测:iPhone17 Pro Max强光下反射率≤0.5%,久看不累——观复盾体验
  • 当你的排查助手变成了AI:大模型辅助根因分析在线上故障排查中的应用
  • 虚拟机配置终端连接,出现:因为在此系统上禁止运行脚本。有关详细信息请参阅 https:/go.microsoft.con/fwlink/?LinkID=13517e
  • 微前端架构下实现子应用间虚拟DOM Diff算法原理与沙箱隔离方案
  • 2026年靠谱的空压机代理品牌有哪些 - myqiye
  • 去幼儿园报名,幼儿园需要给小孩面试吗?
  • 自考 / 成人本科论文,性价比高的 AI 写作软件有哪些?真实使用反馈
  • VMware安装虚拟机教程(超详细)
  • 聊聊Java中的of
  • 【系统学AI】论文导读 ③:Building Effective Agents——Anthropic 的 Agent 设计圣经
  • 2026苏州瓷砖空鼓修复哪家靠谱?本地7家免砸砖注浆维修公司推荐 - 苏易修缮
  • 【极验防护挑战】Browser-Use 如何应对具备轨迹检测行为的高级验证码系统?
  • 海关行业知识图谱问答方案
  • 宁波中允业主委员会选举第三方的优势有哪些?怎么收费? - mypinpai
  • 3步打造完美Hackintosh:智能配置工具终极指南
  • 连接世界——远程仓库与 GitHub 协作实战
  • 部署 Waline 评论系统到自己的服务器完全指南 (保姆级教程 2026)
  • 2026年苏园再生费用排名,源头工厂价更实惠 - mypinpai
  • 2026上海瓷砖空鼓修复哪家靠谱?本地7家免砸砖注浆维修公司推荐 - 苏易修缮
  • 工业吸尘器品牌哪家好?杰力科清洁设备怎么样? - mypinpai
  • 进阶利器与最佳实践——成为团队里的 Git 高手
  • 基于Arduino与TEA5767的FM收音机DIY:从I2C通信到系统调试全解析
  • 2026年软质高速自复位拉链门好用吗? - mypinpai
  • 基于树莓派与光电传感器的智能曲棍球桌自动计分系统设计与实现
  • 单片机内存实验
  • WeChatMsg:永久保存与智能分析微信聊天记录的本地化解决方案
  • 别再手动查漏洞了!用OWASP DependencyCheck给你的Maven项目做个自动化安全体检(附Jenkins集成)
  • 2026最新!别乱交智商税乱踩坑亲测4款免费录音转文字软件神器好用到哭!