0

這是情景: 我知道,使用相關的春天卡夫卡最新的API(如Spring的集成 - 卡夫卡2.10),我們可以這樣做:春季卡夫卡消費者:有沒有使用卡夫卡0.8從多個分區讀取的方法?

@KafkaListener(id = "id0", topicPartitions = { @TopicPartition(topic = "SpringKafkaTopic", partitions = { "0" }) }) 

@KafkaListener(id = "id1", topicPartitions = { @TopicPartition(topic = "SpringKafkaTopic", partitions = { "1" }) }) 

,並與相關的不同分區上的讀同樣的kafka話題。

我想知道,如果我們能做到使用相同的,例如彈簧集成 - 卡夫卡1.3.1

我沒有找到關於如何做到這一點的任何提示(我在XML有趣版)。

回答

0

在卡夫卡,你可以決定從哪個主題你想讀, 但我們不能決定由哪個分區我們要讀取,它是由卡夫卡來決定,爲了避免多次閱讀相同的消息。

根據卡夫卡的定義,消費者不會爲閱讀目的分享分區。

如果您的消費者比分區多,某些消費者將保持空閒狀態,並且不會從任何分區消耗。例如,如果我們有5個消費者和4個分區,則1個消費者將保持空閒狀態,並且不會消耗來自kafka經紀人的數據。

實際分區分配由kafka經紀人(集團協調員)和領導消費者完成。我們無法控制。

+0

我明白你的觀點。我的意思基本上是一個有。 4個分區與一個主題相關。而我的消費者正在消費來自一個分區的消息。是不是我從不同分區讀取的例子? – Columb1a

+0

如果您有一個消費者和4個分區,消費者將從所有4個分區中消費。 –

+0

好的。我只是更新了描述。如果你看到第二行說分區1,另一行說分區0.那麼這是如何工作的?我從這個例子中得到了這個結論:http://howtoprogram.xyz/2016/09/25/spring-kafka-multi-threaded-message-consumption/ – Columb1a