当前位置: 首页 > 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.jsqmd.com/news/939162/

相关文章:

  • 全国哪家台球厅设计公司的口碑较好? - myqiye
  • 现在Java面试背八股文已经没用了吗?
  • AI招聘模块接入HR系统失败率高达68%?——从API协议、数据血缘到权限治理的全链路诊断
  • 如何重新掌控你的数字记忆:WeChatMsg让聊天记录成为你的个人数字资产
  • 985计算机水硕,转大模型应用开发的感悟
  • 基于PixelBlaze与NeoPixel的可穿戴交互服装设计与实现
  • 圆偏振光+磁控溅射AR膜实测:iPhone17 Pro Max强光下反射率≤0.5%,久看不累——观复盾体验
  • 当你的排查助手变成了AI:大模型辅助根因分析在线上故障排查中的应用
  • 虚拟机配置终端连接,出现:因为在此系统上禁止运行脚本。有关详细信息请参阅 https:/go.microsoft.con/fwlink/?LinkID=13517e
  • 微前端架构下实现子应用间虚拟DOM Diff算法原理与沙箱隔离方案
  • JetBrains IDE试用期重置解决方案:告别开发中断的终极指南
  • 抖音无水印视频批量下载工具深度解析与实战指南
  • 2026年靠谱的空压机代理品牌有哪些 - myqiye
  • 去幼儿园报名,幼儿园需要给小孩面试吗?
  • 聊聊Java中的of
  • VMware安装虚拟机教程(超详细)
  • 自考 / 成人本科论文,性价比高的 AI 写作软件有哪些?真实使用反馈
  • 【系统学AI】论文导读 ③:Building Effective Agents——Anthropic 的 Agent 设计圣经
  • 2026苏州瓷砖空鼓修复哪家靠谱?本地7家免砸砖注浆维修公司推荐 - 苏易修缮
  • 【极验防护挑战】Browser-Use 如何应对具备轨迹检测行为的高级验证码系统?
  • 惠州市阿特拉斯的空压机代理多少钱? - myqiye
  • Esper——核心概念
  • Ubuntu20系统启动失败别慌!手把手教你用U盘‘试用模式’无损修复(保留/home和软件)
  • 2026如何挑选真正实用的材料进销存管理系统?
  • 基于Arduino与555定时器的智能钢琴:超声波触发自动演奏系统设计
  • 如何高效使用Python自动化抢票工具:大麦网智能抢票脚本完全指南
  • CS Demo Manager:从游戏回放到战术洞察的专业分析工具
  • 2026四川火锅加盟品牌评测:四川火锅品牌加盟、小成本创业火锅加盟、成都主题火锅店、成都前任的火锅店、成都火锅人气榜选择指南 - 优质品牌商家
  • 推荐靠谱的彩钢复合板品牌,鹏晨新材如何? - myqiye
  • 海关行业知识图谱问答方案