簡體   English   中英

Kafka從使用者之間的分區分發消息

[英]Kafka distributing messages from a partition among consumers

我有一個Kafka主題,當前有3個分區。 我希望我的使用者從同一分區讀取,但是每條消息都應以循環方式發送給不同的使用者。 有可能實現這一目標嗎?

為此,您必須實現一個使用者組。 它是Kafka開箱即用的。 您只需為樹使用者指定相同的group.id。

[edit]但是,每個消費者都會在不同的Kafka分區中進行讀取。 我認為,如果僅使用Kafka API,則不可能在同一分區中讀取同一組的不同使用者。

在文檔中查看更多信息: http : //kafka.apache.org/documentation.html#intro_consumers

怎么樣,在生產者處,消息是基於某個密鑰進行路由的。 可以將消息1路由到分區1,將消息2路由到分區2,將消息3路由到分區3。然后,您應該將三個使用者分為一組。 可以使使用者1消耗分區1,使用者2消耗分區2,使用者3消耗分區3。

順便說一句,如何實現它取決於您所使用的kafka客戶端,消息是什么。 您應該提供更多詳細信息。

您所說的違反了分區的目的。 分區並非為在Kafka中進行簡單的負載平衡而設計。 如果確實需要,則有兩個選擇。

  1. 如果您可以控制產生該主題的生產者,請執行簡單的mod 3哈希分區。 因此,消息將平均分布在3個分區中。 現在,您的每個消費者都將從一個分區進行消費。 這實際上意味着每個消費者都將閱讀每條第三條消息。 那解決了你的問題。
  2. 如果您無法控制生產者,請以正常方式從主題進行消費。 用簡單的mod 3哈希分區編寫一個生產器,並將其生產到新主題。 再次從該主題中消費。 與第一種情況相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM