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)

相关推荐
用户849137175471621 小时前
订单超时未支付自动取消实现方案 | 三种方案详解
redis·面试·rabbitmq
蓝胖的四次元口袋1 天前
RabbitMQ知识梳理(2)
分布式·rabbitmq
叶总没有会2 天前
RabbitMQ基础--java客户端
java·rabbitmq·java-rabbitmq
Thomas.Sir2 天前
第31课:微服务消息驱动(RabbitMQ/RocketMQ)适配与解耦实战
微服务·rabbitmq·rocketmq
蓝胖的四次元口袋2 天前
RabbitMQ知识梳理(1)
分布式·rabbitmq
叶总没有会4 天前
MQ基础与使用背景
rabbitmq
墨神谕5 天前
RabbitMQ 从入门到实战:核心原理、消息模型、可靠性机制与 Spring Boot 实战
spring boot·rabbitmq·java-rabbitmq
做个文艺程序员5 天前
MQ第07篇:Java SaaS多租户消息隔离实战:RabbitMQ VHost+RocketMQ Tag+命名空间架构
spring boot·rabbitmq·rocketmq·saas·多租户
j7~5 天前
【仿 RabbitMQ 项目】发布订阅消息队列 (篇九):队列数据管理,内存镜像 + SQLite 持久化实现
数据库·c++·分布式·sqlite·rabbitmq·队列数据管理
此时不提桶,更待何时5 天前
06-23-A-RabbitMQ生态集成详解
分布式·rabbitmq