【RabbitMq 篇四】-延迟队列(DLX+TTL)

前言

延迟消费在 RabbitMq 没有属性可以设置,只能通过 死信交换器(DLX)和设置过期时间(TTL)结合起来达到延迟的效果,所以我要介绍DLX和TTL以及实现延迟队列。

 

 

正文

 

使用所有框架和中间件的版本

环境
框架 版本
Spring Boot                 2.1.5.RELEASE
RabbitMq 3.7.15
JDK

1.8.0_144

Erlang 22.0.2

 

 

过期时间(TTL)

 

TTL是Time To Live的缩写, 也就是生存时间。RabbitMq支持对消息和队列设置TTL,对消息这设置是在发送的时候指定,对队列设置是从消息入队列开始计算, 只要超过了队列的超时时间配置, 那么消息会自动清除。

如果两种方式一起使用消息对TTL和队列的TTL之间较小的为准,也就是消息5s过期,队列是10s,那么5s的生效。

默认是没有过期时间的,表示消息没有过期时间;如果设置为0,表示消息在投递到消费者的时候直接被消息,否则丢弃。

设置消息的过期时间用  x-message-ttl 参数实现,单位毫秒。

设置队列的过期时间用 x-expires 参数,单位毫秒,注意,不能设置为0。

 

死信交换器(DLX)

 

DLX是Dead-Letter-Exchange的缩写,全称死信交换器。成为死信队列后,可以被重新发送到另外一个交换器中,这个交换器就是DLX,绑定DLX到队列称为死信队列。注意,死信队列和死信交换器不一样哦

成为死信一般由以下几种情况:

你可能感兴趣的:(rabbitMq,rabbitMq延迟队列,rabbitMq,过期时间,rabbitMq死信队列,TTL,DLX)