我使用一个线程来轮询数据,另一个线程来处理数据。 由于处理时间较长,因此我希望在数据变得越来越大时限制数据大小。我的计划是轮询(超时:0毫秒)然后它将返回空的记录。然而,事实是,每隔约10次,poll(0)方法将获取已满的记录。
我的问题是,
为什么poll(0)有时会取回完整记录?即使大部分时间它都没赢。
有没有办法限制民意调查?
PS:我尝试过consumer.pause()方法。但由于消费者随机采用分区。我不知道要暂停哪些分区。我如何知道消费者实例采用哪些分区?
答案 0 :(得分:0)
consumer.assignment()将为您的使用者返回已分配的分区集。 max.poll.records设置确定要返回的ConsumerRecords的最大数量,默认为500.我猜如果线程在向kafka发出请求之后但在选择响应之前暂停,则poll(0)将仅返回超级繁忙系统上的记录