如何使用KafkaConsumer实现每个分区的轮询?

时间:2018-08-02 22:50:25

标签: apache-kafka kafka-consumer-api

我正在尝试按分区从Kafka消费。我正在使用KafkaConsumer api来做到这一点。我看到提供了一种pauseresume方法,从文档中我可以看出这是我想要的行为。

  

暂停从请求的分区中提取。将来对poll(long)的调用将不会从这些分区中返回任何记录,除非已使用resume(Collection)恢复了它们。请注意,此方法不会影响分区订阅。特别是,使用自动分配时,它不会导致组重新平衡。

我担心的是,我不会间歇性地暂停和恢复KafkaConsumer,而是将暂停所有分区,除了我要从中使用的分区。我担心暂停调用的费用很高,并且会导致吞吐量问题。

我不确定这是否是实现KafkaConsumer中每分区消耗量的正确方法,因此任何想法都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

您可以使用assign类的KafkaConsumer方法来指定要使用的分区。 Pauseresume方法将一组分区作为参数,因此您可以暂停或恢复一组特定的分区。