模式切换
使用 docker-compose 启动包含延迟插件的 RabbitMQ 容器服务
在 rabbitmq-demo
目录下创建 log
目录和 data
目录,用于存放日志和数据。
shell
mkdir -p rabbitmq-demo/log
mkdir -p rabbitmq-demo/data
为子目录分配读写权限,如果不分配权限,可能会导致容器无法正常启动。
shell
chmod -R 777 rabbitmq-demo/
从 RabbitMQ-社区插件中下载延迟插件,保存到 rabbitmq-demo/plugins
目录下。
项目文件树结构如下:
shell
rabbitmq-demo/
├── docker-compose.yml
├── Dockerfile
├── plugins
│ └── rabbitmq_delayed_message_exchange-3.12.0.ez
├── log
└── data
编写 Dockerfile 文件,指定 RabbitMQ 镜像版本和延迟插件版本。
dockerfile
FROM rabbitmq:3.12-management
MAINTAINER hayden
# 添加插件到指定目录,可按照此方式自行扩展其他插件
ADD ./plugins/rabbitmq_delayed_message_exchange-3.12.0.ez /plugins
# 开启插件
RUN rabbitmq-plugins enable rabbitmq_delayed_message_exchange
ENTRYPOINT ["rabbitmq-server"]
构建带有延迟插件的自定义 RabbitMQ 镜像。
shell
docker build -t hongyoudan/rabbitmq:3.12-delayed .
编写 docker-compose.yml
文件,指定 RabbitMQ 容器服务的配置信息。
yml
version : '1.0.01'
services:
rabbitmq-common:
container_name: rabbitmq-common
# 如果使用构建好的镜像启动,则指定 image。
# 如果 docker-compose.yml 和 Dockerfile 在同一目录下,可以使用 build 指令构建镜像。
# 二者选其一即可。
image: hongyoudan/rabbitmq:3.12-delayed # 自定义镜像,名称要与构建的镜像名称一致
# build:
# context: ./rabbitmq
ports:
- "5672:5672" # API 端口
- "15672:15672" # 控制台端口
environment:
TZ: Asia/Shanghai
RABBITMQ_DEFAULT_USER: common
RABBITMQ_DEFAULT_PASS: common123
volumes:
- log:/var/log/rabbitmq
- data:/var/lib/rabbitmq
启动 RabbitMQ 容器服务。
shell
docker-compose up -d rabbitmq-common
开放端口 5672
和 15672
,分别用于 API 和控制台访问。
shell
firewall-cmd --zone=public --add-port=5672/tcp --permanent
firewall-cmd --zone=public --add-port=15672/tcp --permanent
firewall-cmd --reload
登录 RabbitMQ 控制台,在添加 Exchange 时,可以看到 x-delayed-message
类型即为延迟插件。