docker rabbitmq 安装 延迟队列 rabbitmq_delayed_message_exchange 插件

本文档介绍了如何在Docker环境下基于rabbitmq:3.9.20-management镜像构建新的定制镜像,以包含rabbitmq_delayed_message_exchange延迟队列插件。通过编写Dockerfile,将插件文件复制到镜像中并在启动时启用插件,确保在多主机和多容器环境中无需手动安装。最后验证了插件已成功启用。

以  官方的 rabbitmq:3.9.20-management 为例,默认开启的插件有4个,如下所示

2022-07-09 21:31:55.624125+08:00 [info] <0.814.0> started TCP listener on [::]:5672
 completed with 4 plugins.
2022-07-09 21:31:55.933210+08:00 [info] <0.669.0> Server startup complete; 4 plugins started.
2022-07-09 21:31:55.933210+08:00 [info] <0.669.0>  * rabbitmq_prometheus
2022-07-09 21:31:55.933210+08:00 [info] <0.669.0>  * rabbitmq_management
2022-07-09 21:31:55.933210+08:00 [info] <0.669.0>  * rabbitmq_web_dispatch
2022-07-09 21:31:55.933210+08:00 [info] <0.669.0>  * rabbitmq_management_agent

从上面的日志可以看出,默认开启的4个  rabbitmq_prometheus  rabbitmq_management  rabbitmq_web_dispatch  rabbitmq_management_agent。

进入今天的正题,开启 延迟队列  rabbitmq_delayed_message_exchange

方式一

容器启动后,执行exec -it,然后手工安装。好像这个也行,但是没有达到我的要求。我的要求比较高。试想一下,如果使用docker swarm(会有多主机,多个运行容器的问题,也就是说,以后会有多少个容器是未知的,所以也就不可能docker exec -it 进行安装了)。所以此方案不考滤。

方式二

那就从映像上入手呗。基于官网的说明,那就自己构造镜像(是在官网的基出上哦,不是从零开始)。docker rabbit上有这么一句

FROM rabbitmq:3.8-management
RUN rabbitmq-plugins enable --offline rabbitmq_mqtt rabbitmq_federation_management rabbitmq_stomp

好的,那就试试它吧。

整理一下过程

1、下载延迟队列插件所需的文件,并且放在和Dockerfile文件同一目录下

2、编写Dockerfile脚本

FROM rabbitmq:3.9.20-management
COPY rabbitmq_delayed_message_exchange-3.9.0.ez /plugins
RUN rabbitmq-plugins enable --offline rabbitmq_delayed_message_exchange

3、构建Image

[root@centos7-01 rabbitmq]# docker build -t my-rabbitmq:3.9.20-management .
Sending build context to Docker daemon  40.96kB
Step 1/3 : FROM rabbitmq:3.9.20-management
 ---> fb704bff19d0
Step 2/3 : COPY rabbitmq_delayed_message_exchange-3.9.0.ez /plugins
 ---> f1820f32b441
Step 3/3 : RUN rabbitmq-plugins enable --offline rabbitmq_delayed_message_exchange
 ---> Running in 2889e79eda7b
Enabling plugins on node rabbit@2889e79eda7b:
rabbitmq_delayed_message_exchange
The following plugins have been configured:
  rabbitmq_delayed_message_exchange
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_prometheus
  rabbitmq_web_dispatch
Applying plugin configuration to rabbit@2889e79eda7b...
The following plugins have been enabled:
  rabbitmq_delayed_message_exchange

set 5 plugins.
Offline change; changes will take effect at broker restart.
Removing intermediate container 2889e79eda7b
 ---> ddcdf3a8eb80
Successfully built ddcdf3a8eb80
Successfully tagged my-rabbitmq:3.9.20-management
[root@centos7-01 rabbitmq]# 

4、测试一下生成的Image

[root@centos7-01 rabbitmq]# docker run --name  my-rab-test  my-rabbitmq:3.9.20-management
2022-07-09 14:08:27.502513+00:00 [info] <0.228.0> Feature flags: list of feature flags found:
2022-07-09 14:08:27.551333+00:00 [info] <0.228.0> Feature flags:   [ ] implicit_default_bindings
2022-07-09 14:08:27.551460+00:00 [info] <0.228.0> Feature flags:   [ ] maintenance_mode_status
2022-07-09 14:08:27.551568+00:00 [info] <0.228.0> Feature flags:   [ ] quorum_queue
2022-07-09 14:08:27.551636+00:00 [info] <0.228.0> Feature flags:   [ ] stream_queue
2022-07-09 14:08:27.551793+00:00 [info] <0.228.0> Feature flags:   [ ] user_limits

......  省略了一些


2022-07-09 14:08:49.027571+00:00 [info] <0.840.0> started TCP listener on [::]:5672
 completed with 5 plugins.
2022-07-09 14:08:49.540134+00:00 [info] <0.685.0> Server startup complete; 5 plugins started.
2022-07-09 14:08:49.540134+00:00 [info] <0.685.0>  * rabbitmq_prometheus
2022-07-09 14:08:49.540134+00:00 [info] <0.685.0>  * rabbitmq_delayed_message_exchange
2022-07-09 14:08:49.540134+00:00 [info] <0.685.0>  * rabbitmq_management
2022-07-09 14:08:49.540134+00:00 [info] <0.685.0>  * rabbitmq_web_dispatch
2022-07-09 14:08:49.540134+00:00 [info] <0.685.0>  * rabbitmq_management_agent

可以看到,官方的是4个插件,现在变成了5个了,并且看到了  rabbitmq_delayed_message_exchange

5、提交Image到私服

6、后面使用的话,由   rabbitmq:3.9.20-management 改为  my-rabbitmq:3.9.20-management 即可。

参考:docker compose 安装 Rabbitmq 并安装延迟队列插件_垂柳踏浪的博客-优快云博客_docker-compose rabbitmq

在使用 Docker Compose 安装 RabbitMQ 时集成 `rabbitmq_delayed_message_exchange` 插件以实现延迟消息功能,可以通过以下步骤完成。这些步骤涵盖了插件的下载、Docker Compose 配置以及插件的启用。 ### 1. 下载插件 首先,需要下载适用于当前 RabbitMQ 版本的 `rabbitmq_delayed_message_exchange` 插件插件可以在 [RabbitMQ 社区插件页面](https://www.rabbitmq.com/community-plugins.html) 上找到。确保下载的插件版本与 RabbitMQ 的版本兼容。例如,如果 RabbitMQ 的版本是 3.9.x,则应选择对应的插件版本,如 `rabbitmq_delayed_message_exchange-3.9.0.ez` [^4]。 ### 2. 创建 Docker Compose 文件 接下来,创建一个 `docker-compose.yml` 文件,用于定义 RabbitMQ 服务及其配置。在这个文件中,需要指定 RabbitMQ 镜像版本,并将插件文件挂载到容器的插件目录中。以下是一个示例配置: ```yaml version: '3' services: rabbitmq: image: rabbitmq:3.9-management container_name: rabbitmq ports: - "5672:5672" - "15672:15672" environment: RABBITMQ_DEFAULT_USER: admin RABBITMQ_DEFAULT_PASS: admin volumes: - ./plugins/rabbitmq_delayed_message_exchange-3.9.0.ez:/plugins/rabbitmq_delayed_message_exchange.ez command: - sh - -c - | echo "Enabling rabbitmq_delayed_message_exchange plugin..." rabbitmq-plugins enable --offline rabbitmq_delayed_message_exchange echo "Starting RabbitMQ..." docker-entrypoint.sh rabbitmq ``` ### 3. 启动服务 确保当前目录下有 `plugins` 文件夹,并且 `rabbitmq_delayed_message_exchange-3.9.0.ez` 文件已放置在该文件夹中。然后运行以下命令启动 RabbitMQ 服务并启用插件: ```bash docker-compose up -d ``` ### 4. 验证插件是否启用 进入 RabbitMQ 管理界面(默认地址为 `http://localhost:15672`),使用默认的用户名和密码(`admin`/`admin`)登录,检查插件是否已成功启用。在管理界面的 "Admin" 标签下,可以查看已启用的插件列表 。 ### 总结 通过上述步骤,可以在使用 Docker Compose 安装 RabbitMQ 时集成 `rabbitmq_delayed_message_exchange` 插件,从而实现延迟消息功能。确保插件版本与 RabbitMQ 版本兼容,并且在 Docker Compose 文件中正确配置插件的挂载路径和启用命令。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值