rabbitmq TTL及死信队列,优先级队列

本文详细介绍了RabbitMQ中的TTL(Time To Live)机制,包括消息TTL和队列TTL的设置及影响,以及死信队列(DLX)的工作原理和配置方法。此外,还探讨了如何利用优先级队列实现消息的插队处理。这些特性有助于提升消息处理的灵活性和可靠性。
摘要由CSDN通过智能技术生成

一. TTL 过期时间

  1. 消息TTL

ttl与网络包跳数超时原理一致, 消息在队列中生存的时间超过ttl,就会成为"死信" 消费者无法再接收处理该消息, 除非放入死信队列等进行转移处理

ttl设置方法:

  1. 设置队列属性, 那么队列中所有的消息都有相同的超时时间

    设置方法为在queue declare声明定义的世行加入x-message-ttl进行设置 , 单位是毫秒

  2. 消息本身进行设置, 消息的超时时间不一样

    (两个一起使用时,以ttl最小的那个为准)

    设置方法, 在basicpublish的时候,设置expiration属性参数, 单位也为毫秒

队列属性设置ttl, 如果消息过期,则会直接从对列中丢弃,原因是,由于ttl一致, 又基本是FIFO的模式,那么过期消息一定在队列的头部。

对于消息本身设置ttl, 消息过期,不会马上丢弃,而是在消息进行投递的时候检查过期再丢弃, 这样1. 简单,维护成本低 2. 性能更好,不用实时扫描队列

不设置ttl, 则消息不会过期, 如果ttl为0, 除非消息直接投递给消费者,否则直接丢弃,这个就可以模拟之前的immediate消息处理, 但是immediate 会return消息给生产者,ttl直接丢弃,这里是区别

注: 如果rabbitmq在投递消息的时候发现消息队列为空,那么将会尝试将消息直接投递给消费者,而不用再进入消息队列进行处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值