SpringKafka使用者:有没有一种方法可以使用Kafka 0.8从多个分区读取数据?

SpringKafka使用者:有没有一种方法可以使用Kafka 0.8从多个分区读取数据?,spring,apache-kafka,spring-integration,kafka-consumer-api,spring-kafka,Spring,Apache Kafka,Spring Integration,Kafka Consumer Api,Spring Kafka,这是一个场景: 我知道,使用与Spring kafka相关的最新API(如Spring integration kafka 2.10),我们可以执行以下操作: @KafkaListener(id = "id0", topicPartitions = { @TopicPartition(topic = "SpringKafkaTopic", partitions = { "0" }) }) @KafkaListener(id = "id1", topicPartitions = { @Topic

这是一个场景: 我知道,使用与Spring kafka相关的最新API(如Spring integration kafka 2.10),我们可以执行以下操作:

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

@KafkaListener(id = "id1", topicPartitions = { @TopicPartition(topic = "SpringKafkaTopic", partitions = { "1" }) })
从与同一卡夫卡主题相关的不同分区读取

我想知道我们是否可以使用spring integration kafka 1.3.1这样做


我没有找到任何关于如何做到这一点的提示(我对xml版本很感兴趣)。

在卡夫卡中,您可以决定要阅读哪些主题, 但我们无法决定要从哪个分区读取,而是由卡夫卡决定,以避免重复读取同一条消息

根据卡夫卡的定义,消费者不会出于阅读目的共享分区。

如果您的使用者比分区多,那么一些使用者将保持空闲状态,并且不会从任何分区进行消费。例如,如果我们有5个使用者和4个分区,则1个使用者将保持空闲状态,并且不会使用来自kafka broker的数据


实际的分区分配是由kafka代理(组协调员)和领导者消费者完成的。我们无法控制这一点。

在卡夫卡,你可以决定你想阅读的主题, 但我们无法决定要从哪个分区读取,而是由卡夫卡决定,以避免重复读取同一条消息

根据卡夫卡的定义,消费者不会出于阅读目的共享分区。

如果您的使用者比分区多,那么一些使用者将保持空闲状态,并且不会从任何分区进行消费。例如,如果我们有5个使用者和4个分区,则1个使用者将保持空闲状态,并且不会使用来自kafka broker的数据


实际的分区分配是由kafka代理(组协调员)和领导者消费者完成的。我们无法控制它。

这个定义对我帮助最大:

在ApacheKafka中,消费者群体概念是实现两个目标的一种方式 事情:

让消费者成为同一消费者群体的一部分意味着提供“竞争消费者”模式,与他们分享信息 来自主题的分区分布在组成员之间。每个 使用者从一个或多个分区接收消息 (“自动”分配给它)并且不会显示相同的消息 由其他使用者接收(分配到不同的分区)。在里面 这样,我们可以将消费者的数量扩展到 分区(一个使用者只读取一个分区);在里面 在这种情况下,加入组的新消费者将处于空闲状态 没有被分配到任何分区

将消费者作为不同消费者群体的一部分意味着提供“发布/订阅”模式,其中消息来自 主题分区被发送到不同区域的所有使用者 组。这意味着在同一消费群体中,我们将拥有 上面解释的规则,但在不同的群体中,消费者会 接收相同的消息。当消息在 主题是将要处理的不同应用程序感兴趣的 它们以不同的方式存在。我们希望所有感兴趣的应用程序 接收来自主题的所有相同消息


从这里开始

这个定义对我帮助最大:

在ApacheKafka中,消费者群体概念是实现两个目标的一种方式 事情:

让消费者成为同一消费者群体的一部分意味着提供“竞争消费者”模式,与他们分享信息 来自主题的分区分布在组成员之间。每个 使用者从一个或多个分区接收消息 (“自动”分配给它)并且不会显示相同的消息 由其他使用者接收(分配到不同的分区)。在里面 这样,我们可以将消费者的数量扩展到 分区(一个使用者只读取一个分区);在里面 在这种情况下,加入组的新消费者将处于空闲状态 没有被分配到任何分区

将消费者作为不同消费者群体的一部分意味着提供“发布/订阅”模式,其中消息来自 主题分区被发送到不同区域的所有使用者 组。这意味着在同一消费群体中,我们将拥有 上面解释的规则,但在不同的群体中,消费者会 接收相同的消息。当消息在 主题是将要处理的不同应用程序感兴趣的 它们以不同的方式存在。我们希望所有感兴趣的应用程序 接收来自主题的所有相同消息


从这里我理解你的观点。我的意思基本上是有。与一个主题相关的4个分区。我的消费者只是在使用来自一个分区的消息。这不是我发布的从不同分区读取的示例吗?如果您有一个使用者和4个分区,则使用者将从所有4个分区中读取。Ok。我刚刚更新了描述。如果你看到第二行是分区1,另一行是分区0。那样的话,那是怎么回事?我从这个例子中得到了这一点:同样,您无法控制从哪个分区读取内容,这仅取决于Kafka内部。分区的目的是进行扩展,您试图通过分区实现一些最初设计用于Topics的功能。我理解您的观点。我的意思基本上是有。与一个主题相关的4个分区。我的消费者只是在使用来自一个分区的消息。这不是我发布的从不同分区读取的示例吗?如果您有一个使用者和4个分区,则使用者将从所有4个分区中读取。Ok。我刚刚更新了描述。如果你看到第二行