page contents

死信队列和延迟队如何使用?

轩辕小不懂 发布于 2021-09-01 15:39
阅读 374
收藏 0
分类:中间件
1827
Nen
Nen
- 程序员

死信队列:

死信,顾名思义就是无法被消费的消息,字面意思可以这样理解,一般来说,producer将消息投递到broker或者直接到queue里了,consumer从queue取出消息进行消费,但某些时候由于特定的原因导致queue中的某些消息无法被消费,这样的消息如果没有后续的处理,就变成了死信,有死信,自然就有了死信队列;

死信消息:

1、消息被拒绝(Basic.Reject或Basic.Nack)并且设置 requeue 参数的值为 false

2、消息过期了

3、队列达到最大的长度

过期消息:

在 rabbitmq 中存在2种方可设置消息的过期时间,

第一种通过对队列进行设置,这种设置后,该队列中所有的消息都存在相同的过期时间,

第二种通过对消息本身进行设置,那么每条消息的过期时间都不一样。

如果同时使用这2种方法,那么以过期时间小的那个数值为准。当消息达到过期时间还没有被消费,那么那个消息就成为了一个 死信 消息。

队列设置:在队列申明的时候使用 x-message-ttl 参数,单位为 毫秒

单个消息设置:是设置消息属性的 expiration 参数的值,单位为 毫秒

延时队列:在rabbitmq中不存在延时队列,但是我们可以通过设置消息的过期时间和死信队列来模拟出延时队列。消费者监听死信交换器绑定的队列,而不要监听消息发送的队列。

请先 登录 后评论