死信交换机与延迟队列

本文介绍了死信交换机的概念,包括死信产生的条件以及如何配置死信交换机。同时,详细阐述了延迟队列的工作原理,通过TTL和死信交换机结合,实现消息的延迟投递,适用于用户下单未支付自动取消等场景。
摘要由CSDN通过智能技术生成

死信交换机与延迟队列

死信交换机

满足下列情况一点,即为死信(dead letter):

  1. 消费者使用 basic.reject 或 basic.nack 声明消费失败,并且消息的 requeue 参数设置为 false。
  2. 消息是一个过期消息,超时无人消费。
  3. 要投递的队列满了,最早的消息可能成为死信。

如果该队列配置了 dead-letter-exchange 属性,指定了一个交换机,那么队列中的死信就会投递到这个交换机中,这个交换机就叫 死信交换机(DLX)。

死信交换机与前文的异常交换机的区别:死信交换机是 Queue 发送消息,而异常交换机是 consumer 发送消息。

给队列绑定死信交换机:

  1. 给队列设置 dead-letter-exchange 属性,指定一个交换机。
  2. 给队列设置 dead-letter-routing-key 属性,设置死信交换机与死信队列的 RoutingKey。

延迟队列

如果一个队列中的消息 TTL 结束仍未消费,则会变成死信,ttl 超时分为两种情况:

  1. 消息所在队列设置了存活时间。
  2. 消息本身设置了存活时间。
  3. 当队列和消息都有存活时间时,按照最小存活时间生效。

延迟队列:
利用 TTL 结合死信交换机,实现发送消息后,消费者延迟收到消息的效果。这种消息模式就称为延迟队列(Delay Queue)模式。

延迟队列的使用场景:

  1. 延迟发送信息。
  2. 用户下单,如果用户限定时间内未支付,自动取消。

TTL 结合死信交换机完成延迟队列功能:
延迟队列创建:

	@Bean
    public DirectExchange ttlDirectExchange(){
   
        return 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值