有奖捉虫:行业应用 & 管理与支持文档专题 HOT
本文为您介绍 TDMQ CMQ 版死信队列的基本概念、应用场景和使用方法。

功能介绍

死信队列(Dead-Letter-Queue,DLQ)用于处理无法被正常消费的消息。达到最大重试次数后,若消费依然失败,则表明消费者在正常情况下无法正确地消费该消息,此时 TDMQ CMQ 版不会立刻将消息丢弃,而是将其发送到该消费者对应的特殊队列中,这个特殊队列就是 DLQ。对新建的队列,或存量的队列,您都可以启用死信队列。

应用场景

定位问题:例如,某条消息被多次消费后却未被删除,一般是由于该消息未被正确消费,可能存在问题需要回溯定位。 您可以设置最大接收次数,超额后该消息会被淘汰到指定的死信队列,便于后续问题发现。
优先级队列:例如,共享单车等 O2O 客户,对访问时延、实时性要求非常高。单车开锁逻辑中,当 TDMQ CMQ 版堆积了1亿条消息时,会优先处理最新生产的部分消息,老的消息淘汰到死信队列,在消费者有能力时再处理。n老的消息(如用户扫码开车场景)在等待时已流失了用户,老的消息的价值会偏小,建议优先处理最新消息。

使用方法

TDMQ CMQ 版控制台 新建队列的时候,您可以开启死信队列功能。
?
?
?
死信队列名称:指定某队列为该队列的死信队列。
死信策略:触发死信消息的方式。
最大接收次数:将消息发送到死信队列前允许接收该消息的最大次数,支持设定值为1 - 1000次。
最大未消费时间:将消息发送到死信队列前达到了最大未消费时间,允许设置5分钟 - 12小时。

使用限制

一个队列只能绑定一个死信队列。
绑定的死信队列必须是同地域、同账号下的队列。
如果死信队列已被其他队列绑定,则不能直接删除该死信队列。
开启事务消息的队列,不能成为其他队列的死信队列。
多个队列(最多6个)可以指定同一个队列作为死信队列,但死信队列本身不能再指定其他队列作为死信队列 ,避免嵌套。
可以在源队列(客户端生产、消费的数据队列)中解绑死信队列,解绑后无其他队列绑定,可删除死信队列。
一个已存在的普通队列在 T 时刻被指定为死信队列,若在 T 时刻之前队列中还存在未被消费的消息,需要将 T 时刻之前的消息全部消费完成后才可以触发死信策略。


http://www.vxiaotou.com