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

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

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)。

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


验证是否成功

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

登录:

  • 用户名:admin

  • 密码:admin123

自己设置即可

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

看到管理界面 → 成功 

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


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

RabbitMQ 整体架构

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

生产者 (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.direct direct 直连型,精确匹配
amq.topic topic 主题型,模糊匹配
amq.fanout fanout 广播型,发给所有队列
amq.headers headers 头匹配型(较少用)

你可以做的实验

  • 点击 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

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


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

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

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

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

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

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


消息的生命周期

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

数据隔离的测试:

我们先添加一个user

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

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

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

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

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

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

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

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

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

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

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

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

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

© 版权声明

相关文章