簡體   English   中英

Kafka集群長時間宕機后消費者是否恢復

[英]Does consumer recover after Kafka cluster was down for a long time

我在服務器啟動時啟動 Kafka 消費者。 如果 Kafka 集群長時間(幾個小時)宕機,消費者會怎樣? Kafka再次up后會收到消息嗎?

這最終取決於您如何處理客戶端中的連接異常。

如果您在幾次后具有重試+失敗的斷路器類型邏輯,則消耗循環將停止。 否則,如果您盲目地執行 while(true) 循環,那么消費者將繼續嘗試讀取消息,並在每個請求(心跳、獲取或輪詢)上記錄錯誤

在 Kafka 協議工作時,它們始終是客戶端(在這種情況下是消費者)以請​​求/回復方式開始與集群通信。 這意味着如果集群出現故障,消費者將僅在其下一個請求(可能是元數據請求或獲取請求)中獲得此狀態。 沒有從代理到客戶端的推送機制來告訴他們集群恢復正常工作。 所以這取決於你的消費者的邏輯以及它為獲取消息而輪詢的次數; 正如@cricket_007 已經提到的,它會記錄錯誤。

Kafka 將消息和當前偏移值存儲在磁盤中,時間在代理配置中定義為 log.retention(默認為 168 小時)。 因此,在停機期間,您的消費者每次嘗試輪詢時都會收到“代理可能不可用”的錯誤消息。 當 kafka up 時,如果 down 時間小於 log.retention 時間,那么你的消費者將繼續接收和消費消息,不會有任何損失。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM