赞
踩
下载延迟插件
在 RabbitMQ 的 3.5.7 版本之后,提供了一个插件(rabbitmq-delayed-message-exchange)来实现延迟队列 ,同时需保证 Erlang/OPT 版本为 18.0 之后。
我这里 MQ 的版本是 3.10.5,现在去 GitHub 上下载最新版插件(插件具有兼容性)
下载地址:https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases 下载.ez后缀的版本
安装插件并启用
我用的是 Docker 客户端,下载完成后直接把插件放在 /root 目录,然后拷贝到容器内plugins目录下(rabbitmq是容器的name,也可以使用容器id)
1.将下载好的rabbitmq_delayed_message_exchange-3.10.2.ez插件上传到虚拟机root目录下,我这边用的可视化工具直接拖拽的。
2.将插件复制到docker容器里面的rabbitmq插件目录下
docker cp /root/rabbitmq_delayed_message_exchange-3.10.2.ez rabbitmq:/plugins
3.进入 Docker 容器
docker exec -it rabbitmq /bin/bash
4.查看插件是否成功复制
cd plugins
ls
5.在plugins内启用插件
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
出现下面的内容时代表已经启动成功了。
但是如果你出现这样的错误(不一定会出现)
Enabling plugins on node rabbit@localhost: rabbitmq_management The following plugins have been configured: rabbitmq_management rabbitmq_management_agent rabbitmq_web_dispatch Applying plugin configuration to rabbit@localhost... ** (CaseClauseError) no case clause matching: {:error, {:cannot_read_enabled_plugins_file, '/etc/rabbitmq/enabled_plugins', :eacces}} (rabbitmqctl) lib/rabbitmq/cli/plugins/plugins_helpers.ex:115: RabbitMQ.CLI.Plugins.Helpers.update_enabled_plugins/4 (rabbitmqctl) lib/rabbitmq/cli/plugins/commands/enable_command.ex:129: anonymous fn/6 in RabbitMQ.CLI.Plugins.Commands.EnableCommand.do_run/2 (elixir) lib/stream.ex:1311: anonymous fn/2 in Stream.iterate/2 (elixir) lib/stream.ex:1497: Stream.do_unfold/4 (elixir) lib/stream.ex:1568: Enumerable.Stream.do_each/4 (elixir) lib/stream.ex:936: Stream.do_enum_transform/7 (elixir) lib/stream.ex:1568: Enumerable.Stream.do_each/4 (elixir) lib/enum.ex:1990: Enum.reduce_while/3
解决办法:
你就需要加上umask 0022; 重新启动插件(最好把原来的都删了从头再来一遍)使用这个命令启动监控插件,默认在/etc/rabbitmq目录下创建enabled_plugins文件时赋予权限。
umask 0022; rabbitmq-plugins enable rabbitmq_management
6.退出容器
exit
7.重启 RabbitMQ
docker restart rabbit
然后通过UI查看,可以看到交换机已经多出了一个类型x-delayed-message
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。