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