我處於探索卡夫卡版本0.8.1.1的初始階段。卡夫卡在一個組中的單一消費者故障
我已經成功地運行了消費者組示例,其中有多個分區及其在消費者中的消息發佈情況。
我想運行的一個測試用例是組中的用戶突然死亡(例如,kill -9)。當我這樣做時,我預計再平衡發生,但沒有發生。那麼,我可以做這些事情嗎?使用API
- 觸發再平衡需要等待一定的時間,爲消費者活動,並重新平衡自動假設它是正常關機。
這裏的問題是,分配給死亡使用者的分區中的所有消息都保留在隊列中,直到重新平衡發生時纔會處理。
我處於探索卡夫卡版本0.8.1.1的初始階段。卡夫卡在一個組中的單一消費者故障
我已經成功地運行了消費者組示例,其中有多個分區及其在消費者中的消息發佈情況。
我想運行的一個測試用例是組中的用戶突然死亡(例如,kill -9)。當我這樣做時,我預計再平衡發生,但沒有發生。那麼,我可以做這些事情嗎?使用API
這裏的問題是,分配給死亡使用者的分區中的所有消息都保留在隊列中,直到重新平衡發生時纔會處理。
重新平衡將自動發生,可以在消費者配置(zookeeper.session.timeout.ms)中設置。按照該文件建立
zookeeper.session.timeout.ms:ZooKeeper的會話超時。如果消費者在這段時間內沒有對動物園管理員心跳,它被認爲是死亡,並且會發生重新平衡。默認值爲6000毫秒
同一組中的其他現場消費者將在超時間隔後開始收到消息。
根據您的要求配置此超時值。
同樣來自卡夫卡文檔一些更多的信息:
消費再平衡失敗(你會看到ConsumerRebalanceFailedException):這是由於當兩個用戶試圖擁有相同的主題劃分衝突。日誌會顯示導致衝突的原因(搜索「衝突」)。
- 如果消費者訂閱數量的主題和你的ZK服務器繁忙,這可能被消費者所造成沒有足夠的時間來看看在同一組中的所有消費者的一致視圖。如果是這種情況,請嘗試增加rebalance.max.retries和rebalance.backoff.ms。
- 另一個原因可能是其中一名消費者被殺死。再平衡期間的其他消費者不會意識到消費者在zookeeper.session.timeout.ms時間之後消失了。在這種情況下,請確保rebalance.max.retries * rebalance.backoff.ms> zookeeper.session.timeout.ms。
我想提到的相同的方式,但issue..can你點我的線索仍面臨着相同的http://stackoverflow.com/questions/39241872/kafka-common-consumerrebalancefailedexception-cant-rebalance-after -4 – Ratha