這些條件將觸發一組再平衡:對任何主題
主題創建的訂閱列表的改變
分區數或刪除
現有消費羣成員死亡
新成員通過加入API
它是一個壞主意,有相同的消費集團(相同的ID)從多個主題耗時添加到現有的消費羣。
至少它是有效的,對於好或壞,這取決於你的詳細情況。 這是由官方Java客戶端API的支持,看到這樣的方法定義:
public void subscribe(Collection<String> topics,
ConsumerRebalanceListener listener)
它接受主題的集合。
如果其中一個話題的話務量很輕,是否會導致消費者羣體重新平衡。
不,因爲沒有列出條件。如果我們從主題方面考慮它。只有在主題被刪除或分區計數改變時,纔會發生rebalcance。
更新。
感謝@Hans Jespersen對session和hearbeat的評論。
這是卡夫卡消費者的Javadoc引用:
訂閱一組主題之後,當調用輪詢(長)消費者將自動加入該羣。民意調查API旨在確保消費者的生活。只要您繼續調用投票,消費者就會留在該組中,並繼續接收來自其分配的分區的消息。 在封面下方,輪詢API向服務器發送定期心跳;當你停止調用投票(可能是因爲引發異常),那麼將不會發送心跳。如果在服務器收到檢測信號之前經過配置的會話超時的一段時間,則消費者將被退出該組並且其分區將被重新分配。
並在你的問題,你問什麼會觸發再平衡
在這種情況下的參數,有兩個CONFIGS已與再平衡的關係。它是session.timeout.ms和max.poll.records。其手段是顯而易見的。
由此我們也可以知道,在投票之間做很多工作是一種不好的做法,開銷工作可能會阻止心跳並導致會話超時。
你問關於最新版本0.11嗎? –
@HansJespersen我們在0.10.x –