【发布时间】:2018-03-22 19:53:54
【问题描述】:
我使用一个线程来轮询数据,而另一个线程来处理数据。 由于处理需要更长的时间,所以我想在数据变得越来越大时限制数据大小。我的计划是轮询(超时:0 毫秒),然后它将返回为空的记录。然而,事实是每 10 次左右,poll(0) 方法会获取已满的记录。
我的问题是,
为什么 poll(0) 有时会取回完整的记录?即使大多数时候不会。
有没有办法限制投票?
PS:我尝试了 consumer.pause() 方法。但是由于消费者随机获取分区。我不知道要暂停哪些分区。我如何知道消费者实例占用了哪些分区?
【问题讨论】:
-
有这样的评论:在返回获取的记录之前,我们可以发送下一轮获取,避免在用户处理获取的记录时阻塞等待他们的响应以启用流水线 在 poll() 方法中。由此看来,这是在 poll(0) 上返回更多记录的预期行为。我希望我能更好地理解它的真正含义。对于 PS 部分 - 您可以使用
consumer.assignment()获取分区。
标签: java apache-kafka kafka-consumer-api