1.概述
延时任务,也叫延迟任务
延迟队列:没有固定的开始时间,它常常是由一个事件触发的,而在这个事件触发之后的一段时间内触发另一个事件,任务可以立即执行,也可以延迟。
2.技术选型
RabbitMQ(死信交换机)实现方式 TTL+私信交换机
1.概述
死信队列:存放死信的队列
死信交换机: 绑定死信队列的交换机
2.成为死信的几种情况
消费者使用 basic.reject 或 basic.nack 声明消费失败,并且消息的 requeue 参数设置为false - 消费者消费消息失败,并且不把消息重回队列
消息设置了过期时间,或者消息存放的队列设置了过期时间,超过时间无人消费 - 消息和队列如果同时都设置了过期时间,以时间短的为准
要投递的队列消息满了,无法投递
3.死信交换机
1.概述
如果这个包含死信的队列配置了 dead-letter-exchange 属性,指定了一个交换机,那么正常队列中的死信就会投递到这个交换机中,而这个交换机称为 死信交换机 (Dead Letter Exchange,检查DLX)。
2.死信的路由过程
1、消费者拒绝消费消息
2、队列绑定了死信交换机
3、死信队列有绑定的死信交换机
实现上述功能的条件
1、死信交换机的名称
2、死信交换机与死信队列绑定的 RoutingKey
3.TTL
1.概述
超时未消费,消息变成死信的两种情况
1、消息所在的队列设置了超时时间
2、消息本身设置了超时时间
如果两者都设置了,以短的时间为优先
2.原理图
4.延时队列
1、声明死信交换机和死信队列
2、声明普通交换机和普通队列、绑定关系
3、发消息
不指定消息过期时间
指定消息过期时间
标签:队列,绑定,RabbitMQ,过期,死信,交换机,消息,延时 From: https://www.cnblogs.com/freps/p/18500012