消息回溯功能

最近更新时间:2018-11-27 10:57:33

CMQ 提供类似于 kafka 的消息回溯能力。使用消息回溯,您可在业务成功消费并删除消息后重新消费已删除的消息。此功能便于核心金融业务做业务对账、业务系统重试等操作。

功能说明

如上图,消息的生命周期为蓝色框内的片段。开启消息回溯能力后,已被消费者消费且确认删除的消息会进入消息可回溯区域,CMQ 后端还会保存该信息。但消息超过 Queue的消息生命周期时(假设设置为1天),达到生命周期后,该消息会自动删除,不可回溯。具体产品逻辑如下:

  • 开启:若未开启消息回溯能力,则消费者已消费且确认删除的消息会立即删除。开启该功能时,须指定回溯的可回溯周期,可回溯周期的范围必须小于等于消息的生命周期。

  • 里程碑:根据上一条策略,开启消息回溯后,随着消费者的不断消费及删除,可回溯的消息数量会不断增多。

  • 关闭:关闭消息回溯后,消息可回溯区域的消息将被立即删除,且不可回溯。

  • 队列属性:消息回溯是 Queue 的属性,可在创建时或在修改配置处进行设置。指定回溯(rewind)的时间点后,所有消费者都会从该时间点的消息往后消费。

  • 计费:开启消息回溯能力后,可回溯部分的消息会产生一定的堆积费用,单位价格与消息堆积的费用共同计算。

  • 指定回溯时间点:消费者发起回溯消费,需要指定 Queue Name 及具体的回溯时间。且从最远的时间点,往回回溯。时间为 key,不可逆向消费。 如图所示,只能从 timeA 到 timeB/timeC 消费,不支持反向消费。

  • 指定回溯时间范围:0-15天,控制台开启该能力后,删除的消息才可被回溯。建议关键应用,长期开启消息回溯能力。且消息回溯周期,与消息生命周期设成一致。

  • 不可指定堆积中的消息回溯:若消息仍在堆积中,未被消费,则无法指定某一个具体的位置进行消费。

可回溯范围

最大可回溯时间点 = 当前时间 - 设置的可回溯时长。消息生产时间在这个值之前的不可回溯,之后的可回溯,如下图所示:

时间轴

消息回溯 以消息生产的时间为排序标准,与被删除的先后无关。
如下图所示: