Apache kafka 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

我有一个kafka客户端实例,它正在使用200个分区,现在我希望它只在前3个kafka分区上使用,以便进行调试和采样

我有办法做到吗


或者,我可以从所有分区中使用消息,并从不是前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)