假設我有一個服務,它通過kafka-rest-proxy使用消息,並始終在同一個使用者組上。我們還要說,它正在消耗一個有一個分區的主題。當服務啓動時,它會在kafka-rest-proxy中創建一個新的使用者,並使用生成的使用者url直到服務關閉。當服務恢復時,它將在kafka-rest-proxy中創建一個新的消費者,並使用新的url(和新消費者)進行消費。卡夫卡休息代理消費者創建
我的問題
因爲卡夫卡只能有每個分區最多一個消費者。當消費者重新啓動時,在kafka和kafka-rest-proxy中會發生什麼?即新的消費者是在卡夫卡休息代理中創建的,但舊的消費者沒有機會被銷燬。所以現在'n'消費者在'kafka-rest-proxy'中重新啓動我的服務後有'n'個消費者,但其中只有一個正在被消費。我甚至能夠消費我的新消費者的消息,因爲消費者多於分區?
讓我們更復雜一些,並說我的服務在同一個用戶組和5個分區中有5個實例。 'n'重新啓動服務的所有5個實例之後,我甚至會保證在不確保現有消費者適當銷燬的情況下消費所有消息。即,在消費者創造期間,當消費者出門時,卡夫卡和卡夫卡休息代理人做了什麼?
什麼被認爲是卡夫卡休息代理的最佳實踐,以確保陳舊的消費者總是清理?你建議堅持消費者的網址?我應該強制重新啓動一個kafka-rest-proxy,以確保在啓動我的服務之前銷燬現有的消費者?
*編輯* 我相信我的問題的一部分,此配置回答,但不是全部。
consumer.instance.timeout.ms - 消費者實例自動銷燬之前的空閒時間量。 類型:int 默認:300000 重要性:低