我正在阅读文档并找到max.poll.interval.ms
属性,但它似乎不是我需要的配置。
基本上,我需要min.poll.interval.ms
这样的东西告诉消费者每隔n
秒轮询一次记录。
与max.poll.records
一起,我可以确保我的服务正在处理适当的负载。
答案 0 :(得分:1)
这种方法不起作用。
您需要定期(在循环中)调用Consumer.poll(...)
,以获取新记录(如果有的话)。
如果您在同一个线程中记录处理和接收(轮询),那么如果处理时间过长,您的消费者将被淘汰出消费者群体而另一个将获得分区。
另一种方法是使用kafka-streams,如果你不想这样做的话。在具有相同application id
的不同实例上启动流应用程序将提供某种负载平衡。