重點、重點、重點: 重啓kafka一定要先看看 持久化有沒有問題。
首先,問題沒有解決,只是闡述過程和問題。
問題關鍵字: 偏移量提交失敗,重複消費,新的group不能消費到歷史數據
版本:0.10.2
場景:consumer 兩個group進行消費,但是偏移量從某一時間點開始就無法進行提交。一直在循環消費一個時間段的數據。
嘗試重啓項目,還是不能正常進行消費,偏移量還是不變,但是一直在rebalance,代數持續增長。最後半夜重啓了kafka,消費正常了,但是重複消費的數據 需要刪除,重新處理。這時就要啓動一個重算工具。消費同一個topic的新的group。發現新的group已經加入到了kafka中,也綁定了topic。代數也增加了,重新分配了。但是就是沒有進行消費數據,
如下是重算的group配置:
在spring文件中:auto-offset-reset: earliest //從頭開始消費數據
代碼中:配置消費消息的時間段,滿足時間條件的才能入庫,其他的捨棄。
新加入的group跟老的group偏移量是一樣的,存量也是一樣。。
開始認爲可能是配置參數出問題了,偏移量不能重置,然後試着手動消費了一下數據
手動從頭取數據,發現獲取的數據日期還是當前的。
這個時候就想到了,是不是沒有持久化啊。然後找到了運維,持久化路徑配置的不對,所以歷史數據就拿不到了。
反思了一下,如果當時停掉正常業務服務,然後重算。重算完成再重啓kafka,就能保證數據的完整了。只怪當時太自信了以爲kafka持久化是沒問題的。。。沒想到幾十個環境就這個有問題。。。