2015-05-19 526 views
2

Kafka documentationApache Kafka如何將消息發送給多個消費者組?

卡夫卡不同的方式處理這個。我們的主題分爲一組 完全訂購的分區,每個分區在任何給定時間都由一個消費者 消費。這意味着消費者在每個 分區中的位置只是一個整數,下一個消息的偏移量將消耗到 。這使得所消耗的狀態非常小,每個分區只有一個數字。這個狀態可以是週期性的 檢查點。這使消息確認相當於 非常便宜。

然而,以下是同一個文檔中的快速入門指南,我很容易能夠:

  1. 只有一個分區
  2. 啓動控制檯製片
  3. 推一個創建一個話題很少的消息
  4. 啓動消費者消費--from-beginning
  5. 開始另一個消費者--from-beginning

並且兩個消費者都成功從同一分區消費。

但是,這似乎與上述文件不符?

回答

3

當使用不同的消費羣體時,消費者可以輕鬆使用相同的分區。您可以將羣組標識視爲消費卡夫卡主題的不同應用程序。多個不同的應用程序可能想要以不同的方式使用Kafka主題中的數據,因此不會與其他應用程序發生衝突。這就是爲什麼兩個消費者可能消費一個分區(實際上是兩個消費者如何消費一個分區的唯一方式)。

當你啓動一個控制檯消費者時,它隨機生成一個組ID(link),因此這些消費者正在做我剛剛寫的東西。

+0

我同意這是有用的和想要的。也許文檔可以從「被分成一組完全有序的分區,每個分區在任何給定的時間被一個消費者消費」 - >「被分成一組完全有序的分區,其中每個分區被消耗每個消費羣體中的一個消費者*在任何給定時間「是否正確? – JKnight

+0

另外,誰負責存儲偏移量索引?消費者?什麼時候它是檢查點? – JKnight

+1

@JKnight,是的第一個問題。偏移量存儲在大多數情況下是Zookeeper的「偏移量存儲」中。另一種選擇是在Kafka中存儲偏移量,但是最近增加了這個功能,我懷疑人們使用它。提交偏移量有一些設置,如'autocommit.enable'和'autocommit.interval.ms'。當啓用自動提交時,所有分區的偏移量將在之前提到的每個間隔中進行提交。如果關閉自動提交,您將被迫定期調用'commitOffsets()'或將它們存儲在遠離Kafka/Zookeeper的地方。 – serejja

相關問題