2016-02-24 251 views
0

想知道是否有可能通過卡夫卡消費者(Java客戶端)並行讀取和處理多條消息..我的意思是使用多線程...我應該使用rxJava嗎?卡夫卡消費者可以並行處理多條消息

1)這是一個很好的方法嗎? 2)而且根據我的理解,卡夫卡甚至將每個線程視爲消費者...請糾正我,如果我錯了...

3)並且還希望使Java客戶端作爲守護程序服務在Linux中運行,這樣它連續運行,並輪詢卡夫卡的消息,閱讀和處理相同..這是一個很好的方法..

回答

1

卡夫卡支持並行處理消息的分區,你可以啓動幾個消費者,一個或多個分區對於一個kafka客戶端,kafka也可以通過此模式支持同一分區中的序列處理。

當然,您可以啓動多個線程來處理一個使用者中的多個消息,但不能確保一個分區中的順序處理。

+0

Lemme明白,所以如果我有3個消費者(同一組)和3個分區,每個分區將被分配給消費者......現在,每個消費者一次只能讀取和處理一條消息..因爲我有3個消費者一個時間只有3個消息被處理正確??並沒有得到你的答案的第二部分,如「在一個分區中的序列處理不能保證」這是如何影響消費者,因爲它總是讀取不知道從哪個消息分區它來自.. – shiv455

+0

(1)沒錯。 (2)只有一個分區將分配給一個用戶,因此可以順序處理同一分區中的消息。 – Joey

+0

當你說「所以同一分區中的消息可以按順序處理」時,我們無法實現高吞吐量。如果消費者一次只處理一條消息,例如,製作者每秒發佈40msgs ...但消費者每秒只能處理1 msg ...儘管我們有多個消費者假設如果我們有10個消費者,它每秒會有10條消息...... ????? – shiv455