消息队列 CMQ 消息回溯功能 - 消息队列(Queue)模型 - 文档中心 - 腾讯云 https://cloud.tencent.com/document/product/406/8129
最近更新时间:2020-07-31 17:41:51
CMQ 提供类似于 Kafka 的消息回溯能力。使用消息回溯,您可在业务成功消费并删除消息后重新消费已删除的消息。此功能便于核心金融业务做业务对账、业务系统重试等操作。
如上图,消息的生命周期为蓝色框内的片段。开启消息回溯能力后,已被消费者消费且确认删除的消息会进入消息可回溯区域,CMQ 后端还会保存该信息。但消息超过 Queue 的消息生命周期时(假设为1天),达到生命周期后,该消息会自动删除,不可回溯。具体产品逻辑如下:
-
开启:若未开启消息回溯能力,则消费者已消费且确认删除的消息会立即删除。开启该功能时,须指定回溯的可回溯周期,可回溯周期的范围必须小于等于消息的生命周期。
-
里程碑:根据上一条策略,开启消息回溯后,随着消费者的不断消费及删除,可回溯的消息数量会不断增多。
-
关闭:关闭消息回溯后,消息可回溯区域的消息将被立即删除,且不可回溯。
-
队列属性:消息回溯是 Queue 的属性,可在创建时或在修改配置处进行设置。指定回溯(rewind)的时间点后,所有消费者都会从该时间点的消息往后消费。
-
计费:开启消息回溯能力后,可回溯部分的消息会产生一定的堆积费用,单位价格与消息堆积的费用共同计算。
-
指定回溯时间点:消费者发起回溯消费,需要指定 Queue Name 及具体的回溯时间。且从最远的时间点,往回回溯。时间为 key,不可逆向消费。 如图所示,只能从 timeA 到 timeB/timeC 消费,不支持反向消费。
-
指定回溯时间范围:0 - 15天,控制台开启该能力后,删除的消息才可被回溯。建议关键应用,长期开启消息回溯能力。且消息回溯周期,与消息生命周期设成一致。
-
不可指定堆积中的消息回溯:若消息仍在堆积中,未被消费,则无法指定某一个具体的位置进行消费。
可回溯范围
最大可回溯时间点 = 当前时间 - 设置的可回溯时长。消息生产时间在这个值之前的不可回溯,之后的可回溯,如下图所示:
时间轴
消息回溯 以消息生产的时间为排序标准,与被删除的先后无关。如下图所示: