创建目录,用于存放Docker Compose部署RabbitMQ集群的yaml文件:
mkdir -p /root/composefile/rabbitmq
写入该yaml文件:
vim /root/composefile/rabbitmq/rabbitmq_cluster.yaml
内容如下所示:
version: '3'
services:
rabbitmq1:
image: rabbitmq:management
restart: always
ports:
- "15673:15672"
- "5673:5672"
hostname: rabbitmq1
container_name: rabbitmq1
environment:
- RABBITMQ_DEFAULT_USER=admin
- RABBITMQ_DEFAULT_PASS=admin
- RABBITMQ_ERLANG_cookie=rabbitmq_erlang_cookie
rabbitmq2:
image: rabbitmq:management
restart: always
ports:
- "5674:5672"
hostname: rabbitmq2
container_name: rabbitmq2
environment:
- RABBITMQ_ERLANG_cookie=rabbitmq_erlang_cookie
links:
- rabbitmq1
rabbitmq3:
image: rabbitmq:management
restart: always
ports:
- "5675:5672"
hostname: rabbitmq3
container_name: rabbitmq3
environment:
- RABBITMQ_ERLANG_cookie=rabbitmq_erlang_cookie
links:
- rabbitmq1
- rabbitmq2
rabbitmq:management镜像是开启管理插件的RabbitMQ镜像,环境变量RABBITMQ_ERLANG_cookie需要一致,开始部署:
docker compose -f /root/composefile/rabbitmq/rabbitmq_cluster.yaml up -d
up完成。
[+] Running 13/13 ⠿ rabbitmq3 Pulled 41.5s ⠿ 08c01a0ec47e Pull complete 19.2s ⠿ 1ceb23964d6c Pull complete 19.8s ⠿ 64631f643e2c Pull complete 33.1s ⠿ 67525726a753 Pull complete 33.2s ⠿ 4b28b554c25b Pull complete 34.4s ⠿ 3afdc08bc87a Pull complete 34.5s ⠿ 1e22dd212ab8 Pull complete 34.6s ⠿ b585ed397156 Pull complete 34.7s ⠿ 68de743a7628 Pull complete 34.7s ⠿ rabbitmq1 Pulled 41.5s ⠿ 68b52ebaee48 Pull complete 36.1s ⠿ rabbitmq2 Pulled 41.5s [+] Running 4/4 ⠿ Network rabbitmq_default Created 0.3s ⠿ Container rabbitmq1 Started 2.8s ⠿ Container rabbitmq2 Started 3.3s ⠿ Container rabbitmq3 Started 5.3s
列出正在运行的compose项目。
docker compose ls
RabbitMQ集群的所有节点都在运行。
NAME STATUS rabbitmq running(3)
将rabbitmq1作为主节点,需要在rabbitmq2和rabbitmq3中执行一些命令,将它们加入到集群。
进入rabbitmq2:
docker exec -it rabbitmq2 /bin/bash
执行:
rabbitmqctl stop_app rabbitmqctl join_cluster rabbit@rabbitmq1 rabbitmqctl start_app # 离开容器 exit
进入rabbitmq3:
docker exec -it rabbitmq3 /bin/bash
执行:
rabbitmqctl stop_app rabbitmqctl join_cluster rabbit@rabbitmq1 rabbitmqctl start_app # 离开容器 exit
访问rabbitmq1的管理界面可以看到RabbitMQ集群的三个节点。
测试代码参考下面这篇博客:
RabbitMQ:@RabbitListener注解简化消息监听
只需要修改配置文件:
spring:
rabbitmq:
addresses: 192.168.1.7:5673,192.168.1.9:5674,192.168.1.9:5675
username: admin
password: admin
启动应用,Spring Boot会和RabbitMQ建立连接。
使用Postman请求接口。
RabbitMQ管理界面可以看到消息记录。
消费者也监听到了这条消息。
Docker Compose部署RabbitMQ集群就介绍到这里,如果博主有说错的地方或者大家有不同的见解,欢迎大家评论补充。



