消息隊列 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天,控制台開啟該能力后,刪除的消息才可被回溯。建議關鍵應用,長期開啟消息回溯能力。且消息回溯周期,與消息生命周期設成一致。
-
不可指定堆積中的消息回溯:若消息仍在堆積中,未被消費,則無法指定某一個具體的位置進行消費。
可回溯范圍
最大可回溯時間點 = 當前時間 - 設置的可回溯時長。消息生產時間在這個值之前的不可回溯,之后的可回溯,如下圖所示:
時間軸
消息回溯 以消息生產的時間為排序標准,與被刪除的先后無關。如下圖所示: