[toc]
| 单词 | 词性 | 音标 | 含义 |
|---|---|---|---|
| docker | n. | /ˈdɒkə(r)/ | 容器(把应用及其依赖打包运行) |
| management | n. | /ˈmænɪdʒmənt/ | 管理(这里指 RabbitMQ 的管理控制台) |
| exchange | n. | /ɪksˈtʃeɪndʒ/ | 交换机(消息到达的第一站) |
| durable | adj. | /ˈdjʊərəbl/ | 持久化的(重启不丢失) |
| binding | n. | /ˈbaɪndɪŋ/ | 绑定(交换机与队列的对应关系) |
| routing key | n. | /ˈruːtɪŋ kiː/ | 路由键(交换机按它把消息送进队列) |
Lecture02-RabbitMQ-Ubuntu安装与操作清单
环境:Ubuntu 22.04(64 位) 目标:更新 apt 源 → 安装 Docker → 用 Docker 跑起 RabbitMQ 4 → 通过 Management UI 建交换机/队列并发消息 全程命令逐步执行,每步都有验证,照着做即可。 提示:国内网络下,第 1、2 步可选的"国内镜像加速"能大幅提速,建议优先配置。
1、Ubuntu 系统更新 apt 源
① 刷新软件源索引 + 升级系统软件
sudo apt update # 刷新软件包索引(拿到最新软件列表)
sudo apt upgrade -y # 升级所有可升级的软件包(可选,建议做一次)
② 安装基础工具(后续会用到)
sudo apt install -y curl vim apt-transport-https ca-certificates software-properties-common
验证:执行 apt update 时能看到 Reading package lists... Done 且无红色报错;curl --version 能输出版本号。
可选:切换国内 apt 镜像源(网络慢时)——以清华源为例(先备份):
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g; s/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list sudo apt update(也可用阿里源:把
mirrors.tuna.tsinghua.edu.cn换成mirrors.aliyun.com)
2、Ubuntu 系统安装 Docker
官方推荐用 Docker CE(docker-ce),这里按官方 apt 仓库方式安装。
① 添加 Docker GPG 密钥和仓库(国内必走阿里云镜像)
# 1) 添加 Docker GPG key(走阿里云镜像)
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 2) 添加 Docker apt 仓库(同样走阿里云镜像)
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
⚠️ 国内网络不要用官方源:
download.docker.com在国内经常 TLS 握手被重置,报错OpenSSL SSL_connect: 连接被对方重置+gpg: 找不到有效的 OpenPGP 数据。上面命令已换成阿里云镜像;也可换清华mirrors.tuna.tsinghua.edu.cn/docker-ce。
② 安装 Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
③ 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
sudo docker --version # 能看到 Docker version 20.x / 24.x / 2x.x 即成功
sudo docker run hello-world # 拉取并运行测试镜像,打印 Hello from Docker! 即正常
④ 让当前用户免 sudo 使用 docker(可选,推荐)
sudo usermod -aG docker $USER
# 退出重新登录(或执行 newgrp docker)后生效
newgrp docker
docker ps # 不带 sudo 能执行即成功
可选:配置 Docker 国内镜像加速器(拉镜像快):
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<'EOF' { "registry-mirrors": ["https://docker.m.daocloud.io", "https://dockerproxy.com"] } EOF sudo systemctl restart docker拉取镜像前建议先配置,否则
rabbitmq:4.3-management可能很慢或超时。
3、基于 Docker 安装 RabbitMQ 4.3
官方镜像
rabbitmq,用4.3-management这个 tag——它自带管理控制台插件,正好满足第 4 步用 UI 操作。
① 拉取并启动 RabbitMQ 4.3(含 Management UI,并创建远程用户)
docker run -d \
--name rabbitmq \
--hostname rabbitmq \
-p 5672:5672 \
-p 15672:15672 \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin123 \
rabbitmq:4.3-management
RABBITMQ_DEFAULT_USER/RABBITMQ_DEFAULT_PASS:创建容器时就指定默认用户,该用户自动带administrator权限,且可从任意机器远程登录(不受guest只能 localhost 的限制)。- 注意:设了这两个变量后,内置的
guest用户会被删除——所以登录时用你设的admin(而不是guest)。 - 密码可自行改(示例用
admin123)。
| 端口 | 用途 |
|---|---|
| 5672 | 客户端(AMQP 协议)连接端口 |
| 15672 | Management UI(网页管理台) |
② 验证启动
docker ps # 看到 rabbitmq 容器状态为 Up
docker logs rabbitmq # 无报错、出现 "Server startup complete" 即成功
docker exec -it rabbitmq rabbitmqctl list_users # 应看到 admin,且没有 guest
③ (可选)常用管理命令
docker restart rabbitmq # 重启容器
docker stop rabbitmq # 停止
docker start rabbitmq # 启动
docker rm -f rabbitmq # 删除容器(数据也会清空)
说明:已通过
RABBITMQ_DEFAULT_USER / RABBITMQ_DEFAULT_PASS创建了远程用户,第 4 步直接用admin登录即可,无需再手动建用户。
4、通过 Management UI 创建交换机、队列并发送消息
① 打开管理控制台
- 浏览器访问:
http://localhost:15672(本机);远程则http://服务器IP:15672 - 账号:
admin密码:admin123(即第 3 步RABBITMQ_DEFAULT_USER / PASS设的值)
② 创建一个交换机(Exchange)
- 顶部导航点 Exchanges and Queues → 切到 Exchanges 标签
- 在 Add a new exchange 区域填:
- Name:
demo.exchange - Type:
direct - Durability:
Durable(持久化) - 其他保持默认
- Name:
- 点 Add exchange 按钮,下方列表出现
demo.exchange即成功
③ 创建一个队列(Queue)
- 切到 Queues 标签
- 在 Add a new queue 区域填:
- Name:
demo.queue - Durability:
Durable - 其他保持默认
- Name:
- 点 Add queue,下方出现
demo.queue即成功
④ 把队列绑定到交换机(设置路由关系)
- 点上方队列
demo.queue进入该队列详情页 - 往下找到 Bindings 区域
- 在 Add binding from this queue 填:
- From exchange:
demo.exchange - Routing key:
demo.routing - 点 Bind
- From exchange:
- 绑定的 Exchange 和 Routing key 出现在列表即成功
一句话理解绑定关系:消息发到
demo.exchange、带路由键demo.routing,就会进入绑定了这个键的demo.queue。
⑤ 通过交换机发送一条消息
- 顶部导航切到 Exchanges 标签,点
demo.exchange进入详情 - 往下找到 Publish message 区域
- 填:
- Routing key:
demo.routing(与上面的绑定键一致) - Payload:随便填,如
Hello RabbitMQ 4 ! - Properties → Message TTL:可留空
- Routing key:
- 点 Publish message,页面提示消息已发送
⑥ 验证消息进入队列并被取出
- 切到 Queues 标签,点
demo.queue进入 - 在 Get messages 区域:
- Ack Mode:
Automatic ack(取出即确认) - 点 Get Message(s)
- Ack Mode:
- 下方 Message 区域能看到刚才那条
Hello RabbitMQ 4 !——说明"发 → 路由 → 入队"全链路通了 ✅
5、常用速查
| 操作 | 命令 / 地址 |
|---|---|
| 查看容器状态 | docker ps |
| 看 RabbitMQ 启动日志 | docker logs rabbitmq |
| 管理控制台地址 | http://localhost:15672(admin / 你设的密码) |
| 客户端连接端口 | 5672(如 SpringBoot 的 spring.rabbitmq.host=localhost、port=5672) |
说明:远程登录用户已在第 3 步创建容器时通过
RABBITMQ_DEFAULT_USER / PASS指定(admin),无需再手动建用户,直接http://服务器IP:15672用admin登录即可。 若之后需要临时加更多用户,可用rabbitmqctl:docker exec -it rabbitmq rabbitmqctl add_user 新用户 密码 docker exec -it rabbitmq rabbitmqctl set_user_tags 新用户 administrator docker exec -it rabbitmq rabbitmqctl set_permissions -p / 新用户 ".*" ".*" ".*"
6、本节验证
- 会更新 apt 源并安装 Docker ✅
- 会用 Docker 启动 RabbitMQ 4.3(含远程用户、端口映射)✅
- 会通过 Management UI 创建交换机、队列并绑定 ✅
- 会通过交换机发送消息并验证入队 ✅