Apache kafka kafka客户端可以选择要使用的特定分区吗?
我有一个kafka客户端实例,它正在使用200个分区,现在我希望它只在前3个kafka分区上使用,以便进行调试和采样 我有办法做到吗Apache kafka kafka客户端可以选择要使用的特定分区吗?,apache-kafka,kafka-consumer-api,Apache Kafka,Kafka Consumer Api,我有一个kafka客户端实例,它正在使用200个分区,现在我希望它只在前3个kafka分区上使用,以便进行调试和采样 我有办法做到吗 或者,我可以从所有分区中使用消息,并从不是前3个分区的分区中删除消息。有没有办法找出消息来自哪个分区?如果您只想部分使用分区, 实现org.apache.kafka.clients.consumer.internals.PartitionAssignor ApacheKafka的测试使用MockPartitionAssignor已经扩展了PartitionAssi
或者,我可以从所有分区中使用消息,并从不是前3个分区的分区中删除消息。有没有办法找出消息来自哪个分区?如果您只想部分使用分区, 实现org.apache.kafka.clients.consumer.internals.PartitionAssignor ApacheKafka的测试使用MockPartitionAssignor已经扩展了PartitionAssignor 实施PartitionAssignor并设置partition.assignment.strategy
参考:您可以使用KafkaConsumer.assignjava.util.Collection分区来分配一组特定的分区。为了找出消息的部分,您可以使用ConsumerRecord.partition,因为您还没有指定使用哪种消费API,我将给出一个基于Python库的示例 如果您真的只想从分区子集中读取,可以执行以下操作:
consumer.assign([TopicPartition('foobar', 2)])
next_message = next(consumer)
我会为你工作的。但我建议采用第一种方法。无论您选择何种开发语言,所有卡夫卡消费者都必须实现上述功能
consumer.assign([TopicPartition('foobar', 2)])
next_message = next(consumer)