Kafka消费者民意调查(超时:0),但实际上是取回记录

时间:2017-05-06 03:17:32

标签: java apache-kafka kafka-consumer-api

我使用一个线程来轮询数据,另一个线程来处理数据。 由于处理时间较长,因此我希望在数据变得越来越大时限制数据大小。我的计划是轮询(超时:0毫秒)然后它将返回空的记录。然而,事实是,每隔约10次,poll(0)方法将获取已满的记录。

我的问题是,

  1. 为什么poll(0)有时会取回完整记录?即使大部分时间它都没赢。

  2. 有没有办法限制民意调查?

  3. PS:我尝试过consumer.pause()方法。但由于消费者随机采用分区。我不知道要暂停哪些分区。我如何知道消费者实例采用哪些分区?

1 个答案:

答案 0 :(得分:0)

consumer.assignment()将为您的使用者返回已分配的分区集。 max.poll.records设置确定要返回的ConsumerRecords的最大数量,默认为500.我猜如果线程在向kafka发出请求之后但在选择响应之前暂停,则poll(0)将仅返回超级繁忙系统上的记录