RabbitMQ-ttl+dlx实现延迟队列

本文介绍了如何利用RabbitMQ的TTL(Time To Live)和DLX(Dead Letter Exchange)特性来实现延迟队列。在RabbitMQ中并没有直接的延迟队列支持,但可以通过这种组合方式来满足如订单超时和用户问候等场景的需求。通过示例展示了工程结构、生产者和消费者的配置与测试,当消息经过设定的延迟时间后,才会被消费者消费。
摘要由CSDN通过智能技术生成

什么是延迟队列?

延迟队列,即消息进入队列后不会立即被消费,只有到达指定时间后,才会被消费。

若有如下需求:

1.下单后,30分钟未支付,取消订单,回滚库存。

2.新用户注册成功7天后,发送短信问候。

其实现方式:

1.定时器

2.延迟队列

在这里插入图片描述
但,在RabbitMQ中没有直接提供延迟队列。
不过我们可以使用 TTL + DLX 组合来实现延迟队列
在这里插入图片描述

延迟队列的实现测试

工程结构:
在这里插入图片描述

spring-rabbitmq-producer.xml中相关配置:

    <!--加载配置文件-->
    <context:property-placeholder location="classpath:rabbitmq.properties"/>

    <!-- 定义rabbitmq connectionFactory -->
    <rabbit:connection-factory id="connectionFactory" host="${rabbitmq.host}"
                               port="${rabbitmq.port}"
                               username="${rabbitmq.username}"
                               password="${rabbitmq.password}"
                               virtual-host="${rabbitmq.virtual-host}"
                               publisher-confirms="true"
                               publisher-returns="true"
    />
    <!--定义管理交换机、队列-->
    <rabbit:admin connection-factory="connectionFactory"/>

    <!--定义rabbitTemplate对象操作可以在代码中方便发送消息-->
    <rabbit:template id="<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值