RabbitMQ怎么实现延迟消息?

在RabbitMQ中,实现延迟消息可以通过死信交换机(DLX)+过期时间(TTL)的方案,也可以采用RabbitMQ官方提供的延迟消息插件。

DLX+TTL。

主要步骤如下:

1.声明并创建普通交换机和普通队列,完成二者的绑定。

2.声明并创建死信交换机和死信队列,也完成二者的绑定。

3.指定当前普通队列的死信要转发到哪个DLX,以及要匹配哪个死信路由键。

4.不给普通队列配置任何的消费者,使普通队列只做消息暂存和过期,不消费。

5.在生产者发送消息时,为消息设置TTL,将消息发送到普通队列和普通交换机。

6当消息在普通队列的存活时间达到TTL后,过期的消息会被自动转发到DLX中,DLX再重新路由到死信队列,从死信队列中发送的消息就是延迟消息。

rabbitmq_delayed_message_exchange插件

主要步骤:

1.将插件放到RabbitMQ的plugins目录

2.执行rabbitmq-plugins enable rabbitmq_delayed_message_exchange命令启用插件

3.声明一个延迟交换机

4.声明一个普通队列并绑定该延迟交换机

5.生产者在发送消息时,设置消息投x-dlay:延迟时间(ms)

相关推荐
江沉晚呤时20 小时前
.NET 9 快速上手 RabbitMQ 直连交换机:高效消息传递实战指南
开发语言·分布式·后端·rabbitmq·.net·ruby
⑩-2 天前
RabbitMQ 架构和工作原理?RabbitMQ 延迟队列如何实现?
java·分布式·架构·rabbitmq
七夜zippoe2 天前
消息队列选型:Kafka vs RabbitMQ vs Redis 深度对比
redis·python·kafka·消息队列·rabbitmq
chikaaa3 天前
RabbitMQ 核心机制总结笔记
java·笔记·rabbitmq·java-rabbitmq
猹叉叉(学习版)3 天前
【ASP.NET CORE】 14. RabbitMQ、洋葱架构
笔记·后端·架构·c#·rabbitmq·asp.net·.netcore
⑩-3 天前
为什么要用消息队列?使用场景?
java·rabbitmq
⑩-4 天前
RabbitMQ与Kafka的区别?
分布式·kafka·rabbitmq
独断万古他化4 天前
【抽奖系统开发实战】Spring Boot 抽奖模块全解析:MQ 异步处理、缓存信息、状态扭转与异常回滚
java·spring boot·redis·后端·缓存·rabbitmq·mvc
未秃头的程序猿5 天前
🚀 别再手写 RabbitMQ 样板代码了!这个开源 Starter 让消息队列集成只需 5 分钟
后端·rabbitmq