安装Docker
一键安装docker
curl -sSL https://get.daocloud.io/docker | sh
启动docker
sudo systemctl start docker
Docker内安装RabbitMQ
拉取镜像
docker pull rabbitmq:management
启动镜像
注意修改用户名和密码
docker run -d -p 5672:5672 -p 15672:15672 -p 15674:15674 -p 5671:5671 -p 15671:15671 --name rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin rabbitmq:management
参数说明
-d 后台运行容器;
--name 指定容器名;
-p 指定服务运行的端口(5672:应用访问端口;15672:控制台Web端口号);
-v 映射目录或文件;
--hostname 主机名(RabbitMQ的一个重要注意事项是它根据所谓的 “节点名称” 存储数据,默认为主机名);
-e 指定环境变量;(RABBITMQ_DEFAULT_USER:默认的用户名;RABBITMQ_DEFAULT_PASS:默认用户名的密码)
下载延迟插件
查看镜像的信息获取版本号
docker inspect rabbitmq:management
示例(信息较多,耐心找一下~)
根据版本号下载延迟插件
下载地址:https://www.rabbitmq.com/community-plugins.html
如下图所示,点Releases,会跳转到GitHub
如下图所示,我的RabbitMQ 版本是3.9.14,我这里选择下载3.9.0版本的插件
将插件文件上传到服务器,我这里是直接上传到/root
下了
安装插件并启用
将刚刚上传的插件拷贝到容器内plugins目录下
docker cp /root/rabbitmq_delayed_message_exchange-3.9.0.ez rabbit:/plugins
我刚刚是将插件上传到/root
下了; rabbit
是容器的name
,也可以使用容器id
进入到RabbitMQ容器内部
docker exec -it rabbit /bin/bash
查看插件是否存在
cd plugins
ls |grep delay
启用插件
(注意是在plugins内)
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
从容器内退出
exit
重启RabbitMQ容器
docker restart rabbit
容器启动成功之后,登录RabbitMQ的管理界面(ip:15672 访问web界面),找到Exchanges
Tab页。点击Add a new exchange
,在Type
里面查看是否有x-delayed-message
选项,如果存在就代表插件安装成功。
Java SpringBoot 代码部分
其他部分代码都是通常的代码,只有声明交换机是特殊的
/**
* 声明交换机
*
* @return
*/
@Bean("delayExchange")
public Exchange delayExchange(){
Map<String, Object> args = new HashMap<>(1);
args.put("x-delayed-type", "direct");
return new CustomExchange("delay.exchange", "x-delayed-message", true, false, args);
}