2015-06-04 138 views
6

我有一個生產者寫消息到主題/分區。爲了維護訂購,我想單個分區,我想讓12個消費者閱讀這個單一分區的所有消息(沒有消費者組,所有消息都應該發給所有消費者)。這是可以實現的嗎?我讀過一些論壇,只有一位消費者可以閱讀每個分區。卡夫卡多個消費者的分區

回答

13

您可以使用SimpleConsumer來實現您正在詢問的內容 - 沒有消費羣體,所有消費者都可以閱讀單個分區。但是,這種方法意味着您必須自己處理抵消存儲和代理失敗處理。

另一種選擇是使用具有不同消費羣體的高級消費者(您可以爲每個消費者分配一個隨機UUID)。通過這種方式,您可以爲所有消費者消費一個主題/分區,並能夠提交抵消和處理代理中斷。

「只有一個消費者可以消費某個主題/分區」的規則僅適用於消費者組,例如,只有一個IN GROUP消費者可以同時使用一個主題/分區。

+1

如果我爲每個消費者使用獨特的消費者羣組ID,我會從單個分區讀取每個消費者的所有消息?即類似的代碼.. props.put(「group.id」,KafkaProperties.groupId); – skumar

+2

是的,如果您的單個分區的主題有1000條消息,則擁有不同消費羣的所有消費者都將讀取1000條消息。 – serejja

+0

您可以舉一些方法1(處理抵消和經紀人failer)和方法2(將randow uui分配給每個消費者)的例子嗎? – skumar

0

如果您在同一個分區上有多個使用者,那麼它會勝過維護排序的初始要求。 雖然,你會訂購存儲,但消費將是無序的。確保你確實沒問題。如果是的話,你可以把每個消費者視爲一個不同的消費羣體。