全部產品
Search
文件中心

ApsaraMQ for RocketMQ:重設消費位點

更新時間:Dec 27, 2024

重設消費位點是指改變訂閱者當前的消費位置。當消費者出現故障或者消費錯誤資料時,您可通過重設消費位點將消費位置復原到之前的某個位點,重新開始消費。您也可以將消費位置移動至最新位點,暫時不處理堆積的訊息。

背景資訊

雲訊息佇列 RocketMQ 版通過消費位點管理訊息的消費進度。每條訊息被某個消費者消費完成後不會立即在隊列中刪除,雲訊息佇列 RocketMQ 版會基於每個Group維護一份消費記錄,該記錄指定了Group下的消費者消費指定Topic時,消費過的最新一條訊息的位點,即消費位點。

當消費者用戶端離線又再次重新上線時,會嚴格按照服務端儲存的消費進度繼續處理訊息。

當消費出現異常或者當前消費位點不符合您的預期時,您可以通過重設消費位點調整您的消費進度。

雲訊息佇列 RocketMQ 版支援以下方式重設消費位點:

  • 从最新位点开始消费

    消費者消費指定Topic中的訊息時,會跳過當前堆積(未被消費)的所有訊息,從重設操作時間後發送的最新訊息開始消費。

  • 从指定时间点的位点开始消费

    • 消費者將從重設時間對應的消費位點之後的訊息進行消費,無論這些訊息是否已被消費過。

    • 指定時間的選擇範圍為目標Topic中儲存的最早的和最晚的一條訊息的生產時間。

    • 重設到某一時刻對應的消費位點,匹配位點時,服務端會根據自動匹配到該時刻最接近的消費位點。

使用情境

  • 消費堆積快速清理:當下遊消費系統效能不足或消費速度小於生產速度時,會產生大量堆積訊息。若這部分堆積訊息可以丟棄,您可以通過重設消費位點快速將消費位點更新到指定位置,繞過這部分堆積的訊息,減少下遊處理壓力。

  • 業務回溯,糾正處理:由於業務消費邏輯出現異常,訊息被錯誤處理。若您希望重新消費這些已被處理的訊息,可以通過重設消費位點快速將消費位點更新到歷史指定位置,實現消費回溯。

注意事項

  • 重設消費位點的範圍是重設指定Group對於目標Topic的消費位點,因此不會影響其他訂閱了該Topic的Group的消費進度。

  • 廣播消費模式下不支援重設消費位點。

  • 雲訊息佇列 RocketMQ 版僅支援重設TCP協議的Group ID的消費位點,不支援重設HTTP協議的Group ID的消費位點。

  • 重設消費位點功能只能重設對消費者可見的訊息,不能重設定時中、重試等待中的訊息。

  • 重試消費位點只能在消費者線上時進行操作。

操作步驟

  1. 登入雲訊息佇列 RocketMQ 版控制台,在左側導覽列單擊執行個體列表

  2. 在頂部功能表列選擇地區,如華東1(杭州),然後在執行個體列表中,單擊目標執行個體名稱。

  3. 在左側導覽列單擊Group 管理,然後單擊TCP 协议頁簽。

  4. 找到需要重設消費位點的Group ID,在其操作列單擊更多,然後在下拉式功能表中,選擇重置消费位点

  5. 在重設消費位點面板中,選擇需要重設的目標Topic和重設方式,然後單擊确定

    警告

    若選擇从最新位点开始消费,則Group ID在指定Topic中的堆積訊息將被全部清除,該操作大概2~3分鐘後生效,請勿重複操作。期間應用所有的消費者將暫停消費2~3分鐘,對延遲敏感的業務請謹慎使用。

    • 从最新位点开始消费:若選擇此項,該Group ID在消費指定Topic下的訊息時會跳過當前堆積(未被消費)的所有訊息,從最新訊息開始消費。

    • 从指定时间点的位点开始消费:選擇此項後會出現時間選擇控制項。請指定一個時間點,消費者將從這個時間點之後發送的訊息開始消費,不管之前的訊息是否又被消費過。

  6. 在彈出的提示對話方塊,確認提示資訊,然後單擊确定

消費位點重設常見問題

我使用兩種方式重設消費位點均失敗,該怎麼處理?

  1. 請確認是否為叢集消費。廣播模式不支援重設消費位點。

  2. 確認當前消費者是否線上。消費者必須線上才能重設消費位點。

  3. 確認SDK版本,SDK版本過低也會導致此問題。建議升級SDK至最新版本,針對TCP Java SDK,至少是1.8.0.Final及以上版本。更多資訊,請參見版本說明

我重設消費位點跳過之前堆積的訊息,為什麼還有部分訊息未被重設?

目前重設訊息功能對重試中訊息不生效,因此重設後仍然可能會有少量重試訊息投遞。

通過消費位點重設,最多能重新消費到多久以前的訊息?

選擇從指定時間點重設時,可以選擇的最早時間為Topic中最早一條訊息的儲存時間,而雲訊息佇列 RocketMQ 版4.x系列執行個體的最大訊息儲存時間長度為3天,超過3天的訊息會從Topic中被刪除。

因此,通過重設消費位點最多可重新消費到3天前的訊息。

相關文檔

除了控制台,雲訊息佇列 RocketMQ 版還支援通過API介面重設消費位點。

OnsConsumerResetOffset - 重設Group ID消費位點