Skip to content

使用 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

开放端口 567215672,分别用于 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 类型即为延迟插件。

24120601.png

编程洪同学服务平台是一个广泛收集编程相关内容和资源,旨在满足编程爱好者和专业开发人员的需求的网站。无论您是初学者还是经验丰富的开发者,都可以在这里找到有用的信息和资料,我们将助您提升编程技能和知识。
专业开发
高端定制
售后无忧
站内资源均为本站制作或收集于互联网等平台,如有侵权,请第一时间联系本站,敬请谅解!本站资源仅限于学习与参考,严禁用于各种非法活动,否则后果自行负责,本站概不承担!