通过循环kafka消费者获取消息和手动调用poll有什么区别?

up9lanfz  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(375)

我正在使用kafkapython从一个主题中获取数据,并将其输入到ElasticSearch中。
据我所知,轮询数据有两种方式:
对消费者使用循环

for message in consumer:
   // Process your message 
   ...
   ..

定期呼叫轮询:

while (repeat at some interval):
   messages = consumer.poll()
   // Process your message 
   ...
   ..

这些让我想到以下问题:
选项1如何在内部工作(调用(轮询、提交等)
方案2的资源密集程度会降低吗 poll() 是否定期打电话?

9lowa7mx

9lowa7mx1#

从主题中获取数据并将其输入到ElasticSearch中
首先,不要为此使用python或手动使用者—使用kafka connect框架,它具有更好的容错性和可伸缩性约束。
选项1如何在内部工作
您可以阅读源代码并找到答案;) poll 将在处理每个批之间进行内部调用,假设pythonapi执行预取
方案2的资源密集程度会降低吗
您需要考虑,不调用poll将导致消费者组重新平衡,因此需要自己的资源来执行该操作。

相关问题