[英]Kafka multiple consumers consuming from one partition - can the message be read twice?
[英]Can multiple Kafka consumers read same message from the partition
我們計划編寫一個 Kafka 消費者(java),它讀取 Kafka 隊列以執行消息中的操作。
由於消費者獨立運行,消息是否一次只由一個消費者處理? 否則所有消費者處理相同的消息,因為他們在分區中有自己的偏移量。
請幫我理解。
這取決於組 ID 。 假設您有一個包含 12 個分區的主題。 如果您有 2 個具有相同 Group Id 的 Kafka 消費者,他們都將讀取 6 個分區,這意味着他們將讀取不同的分區集 = 不同的消息集。 如果您有 4 個具有相同 Group Id 的 Kafka cosnumers,他們每個人都將讀取三個不同的分區等。
但是當您設置不同的 Group Id 時,情況就會改變。 如果您有兩個具有不同 Group Id 的 Kafka 消費者,他們將讀取所有 12 個分區,而彼此之間不會產生任何干擾。 這意味着兩個消費者將獨立讀取完全相同的一組消息。 如果您有四個具有不同組 ID 的 Kafka 消費者,他們都將讀取所有分區等。
我發現這張來自 OReilly 的圖片很有幫助:
同組內:否
跨不同組:是
Kafka 會將訂閱的主題中的每條消息傳遞給每個消費者組中的一個進程。 這是通過平衡消費者組中所有成員之間的分區來實現的,以便將每個分區分配給該組中的一個消費者。 從概念上講,您可以將消費者組視為碰巧由多個進程組成的單個邏輯訂閱者。
簡單來說, Kafka 消息/記錄由每個消費者組只有一個消費者進程處理。 因此,如果您希望多個消費者處理消息/記錄,您可以為消費者使用不同的組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.