RabbitMQ可以对消息和队列设置TTL. 目前有两种方法可以设置。
第一种方法是通过队列属性设置,队列中所有消息都有相同的过期时间。
第二种方法是对消息进行单独设置,每条消息TTL可以不同。如果上述两种方法同时使用,则消息的过期时间以两者之间TTL较小的那个数值为准。
消息在队列的生存时间一旦超过设置的TTL值,就称为dead message, 消费者将无法再收到该消息。
对于第一种设置队列TTL属性的方法,一旦消息过期,就会从队列中抹去(及时性)
而第二种方法为每个消息设置不同过期时间,即使消息过期,也不一定会马上从队列中抹去(死信转发时,不能够及时转发,不靠谱)
因为每条消息是否过期时在即将投递到消费者之前判定的,为什么两者得处理方法不一致?
因为第一种方法里,队列中已过期的消息肯定在队列头部,RabbitMQ只要定期从队头开始扫描是否有过期消息即可,
而第二种方法里,每条消息的过期时间不同,如果要删除所有过期消息,势必要扫描整个队列,所以不如等到此消息即将被消费时再判定是否过期,如果过期,再进行删除。
最新评论
那个国家选错了可以更改吗?
设备限制支持5个设备,我5个设备已经用满了,并且有一个设备不用了,怎么更换设备呢,怎么将不用的设备解绑呢?
还是不行,用了一天443端口就被墙了,防火墙似乎对这个端口特别敏感
服了 刚好是华为用户 请问该怎么办?
楼主你好,我安装了解锁ChatGpt的一键脚本,可是我想卸载,不知道怎么卸载
v2ray客户端用github下载速度很慢而且总中断下载怎么办?