RabbitMQ安装DelayExchange插件实现延迟队列
发布于 2024-07-17
1290
版权声明
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
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葵花宝典的其他文章
MQ消息队列的一点认识和总结
今天主要讲解了一下消息队列是什么,消息队列的作用,以及消息队列可能带来的问题,希望对大家了解消息队列起到一点作用,谢谢。
SpringBoot之实现RabbitMQ消息队列简单发送接收消息
今天接着简单介绍了SpringBoot实现RabbitMQ的消息接收和发送
MySQL索引语法和索引性能分析
MySQL索引语法和索引性能分析
SpringBoot-5-MyBatis最佳实践分享
MyBatis是一个流行的Java持久化框架,它提供了一种简单且灵活的方式来执行CURD操作。MyBatis使用XML或注解配置来映射数据库操作和SQL语句。今天介绍MyBatis CURD操作和一些常用标签
IDEA的降龙八掌,牛批了!!
IDEA的降龙八掌,牛批了!!
加入社区微信群
与行业大咖零距离交流学习
PMO实践白皮书
白皮书上线
白皮书上线