Compose 联调
Spring Boot + RabbitMQ compose 片段。
25 分钟
Compose 联调
用 Docker Compose 同时起 RabbitMQ 与(可选)MySQL、Redis,Spring Boot 本机 dev,rmq Profile 连接。模式类似 kafka-install Compose 片段,方便 lab 一键复现。
学习目标
- 编写
docker-compose.yml启动 RabbitMQ management - 让 Spring Boot 通过服务名
rabbitmq连接 - 与 MySQL、Redis 组成本地最小依赖栈
核心内容
Compose 片段
services:
rabbitmq:
image: rabbitmq:3-management
ports:
- "5672:5672"
- "15672:15672"
environment:
RABBITMQ_DEFAULT_USER: coderoadmap
RABBITMQ_DEFAULT_PASS: lab123
healthcheck:
test: rabbitmq-diagnostics -q ping
interval: 10s
retries: 5
mysql:
image: mysql:8
# 与 spring-boot-essentials 一致
redis:
image: redis:7-alpine
# 见 redis-install
docker compose up -d rabbitmq 后等 healthcheck 通过再启应用,避免 Connection refused。
Spring Boot 联调配置
# application-dev-rmq.yml
spring:
rabbitmq:
host: localhost # Compose 映射到本机时用 localhost
port: 5672
username: coderoadmap
password: lab123
profiles:
active: dev,rmq
应用跑在宿主机、Broker 在容器:host=localhost。若 Boot 也容器化且同一 network,改为 host: rabbitmq。MySQL 仍是权威数据源(sb-config);Redis 缓存可选(redis-spring)。
初始化拓扑
启动时由 @Configuration 声明 Exchange/Queue(rmq-spring),避免手建。或提供 definitions.json 导入 Management;团队 lab 推荐 代码即拓扑,与 Kafka Topic 自动创建思路一致。
与 Kafka lab 并存
.env 切换 MESSAGING=kafka|rmq 激活不同 Profile,避免同时强依赖两个 Broker。CodeRoadMap 文档标明:任务队列实验走 RabbitMQ,事件流实验走 Kafka。
练习
- 写 Compose 并
docker compose up,浏览器打开 15672 - Spring 应用启动后在 Connections 看到一条连接
- 画出 MySQL + Redis + RabbitMQ 在本地 dev 的数据流