RabbitMQ安装DelayExchange插件实现延迟队列
发布于 2024-07-17
1408
版权声明
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
springboot葵花宝典
扫码关注公众号
扫码阅读
手机扫码阅读
RabbitMQ安装DelayExchange插件实现延迟队列
今日目标
本文旨在讲解如何安装和使用RabbitMQ官方推出的DelayExchange插件,以实现延迟队列功能。延迟队列的应用场景包括延迟发送短信、订单超时取消、会议通知等场景。
1. 安装DelayExchange插件
1.1 Docker安装RabbitMQ
通过Docker运行RabbitMQ容器,使用命令 docker run 设置容器名称、端口映射和默认账号密码。以下是关键参数解读:
- --hostname:设置容器主机名
- -p 5672:5672:AMQP通信端口
- -p 15672:15672:管理界面端口
- -e RABBITMQ_DEFAULT_USER 和 -e RABBITMQ_DEFAULT_PASS:设置默认用户名和密码
1.2 安装插件
Docker环境下需要下载DelayExchange插件并手动安装。插件下载地址为GitHub上的 3.9版本。
2. 插件安装步骤
2.1 下载插件
使用以下命令下载插件到Linux环境:
curl -O -L https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/3.9.0/rabbitmq_delayed_message_exchange-3.9.0.ez
2.2 上传插件到Docker容器
将下载的插件文件复制到容器内:
docker cp rabbitmq_delayed_message_exchange-3.9.0.ez :/plugins
2.3 启用插件
进入容器内部执行以下命令启用插件:
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
3. DelayExchange介绍和使用
3.1 插件工作流程
DelayExchange通过声明一个交换机为 delayed 类型实现延迟队列。流程包括接收消息、判断 x-delay 属性、持久化消息并在延迟时间后重新投递。
3.2 使用插件
通过两种方式声明交换机:
- 注解方式:使用 @RabbitListener 与 @Exchange 设置交换机的类型和属性
- Bean方式:通过配置类定义交换机、队列和绑定关系
3.3 发送消息
发送消息时需携带 x-delay 属性指定延迟时间:
Message message = MessageBuilder
.withBody("hello, delay message".getBytes(StandardCharsets.UTF_8))
.setHeader("x-delay", 10000) // 延迟10秒
.build();
rabbitTemplate.convertAndSend("delay.direct", "delay", message, correlationData);
3.4 测试
通过浏览器访问 http://localhost:8888/publisher/delay/ 测试延迟队列功能。
总结
实现延迟队列插件的步骤包括:
- 安装DelayExchange插件
- 声明交换机并设置
delayed属性为true - 发送消息时添加
x-delay属性
本文详细介绍了基于Docker安装和使用DelayExchange插件的完整流程和测试方法。
springboot葵花宝典
springboot葵花宝典
扫码关注公众号
还在用多套工具管项目?
一个平台搞定产品、项目、质量与效能,告别整合之苦,实现全流程闭环。
查看方案
springboot葵花宝典的其他文章
Arthas常用命令
Arthas常用命令
Freemarker快速入门:创建动态模板引擎
在现代Web开发中,动态生成内容是非常常见的需求。为了更好地将数据与界面结合,使用模板引擎是一种有效的方式。本文将向你介绍Freemarker,一个强大的Java模板引擎,帮助你快速创建动态模板。
SpringCloud简述
主要介绍了一下什么是SpringCloud,已经经常使用的各个组件的简介,后续开始SpringCloud系列教程
SpringSecurity-12-Redis实现基于session共享登录方案
SpringSecurity-12-Redis实现基于session共享登录
倒排索引:提升Elasticsearch(ES)搜索效率的关键技术
倒排索引:提升Elasticsearch(ES)搜索效率的关键技术今日目标 理解倒排索引概念随着信息时代的到
加入社区微信群
与行业大咖零距离交流学习
PMO实践白皮书
白皮书上线
白皮书上线