首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >卡夫卡的消费者是在调查()还是被经纪人的广播/信号吵醒了?

卡夫卡的消费者是在调查()还是被经纪人的广播/信号吵醒了?
EN

Stack Overflow用户
提问于 2019-10-24 23:32:51
回答 2查看 566关注 0票数 1

如果我从poll()语句中的consumer中提取while True:,我就会发现poll()阻塞了。如果使用者对来自主题(offset = OFFSET_END)的消息是最新的,那么消费者如何执行它的阻塞poll()

消费者是否默认遵守酒吧/订阅的心态,在这种心态下,它会睡觉,等待来自经纪人的发布和广播/信号?

还是消费者在不停地自转,检查这个话题?

如果这有关系的话,我正在使用汇合python客户端。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-25 00:45:42

kafka消费者基本上是长轮询循环,由调用轮询()的用户线程驱动(异步)。

整个协议是请求响应,完全由客户端驱动.没有任何形式的经纪人发起的“推”。

fetch.max.wait.ms控制单个代理等待多长时间才能响应(如果没有数据),而阻塞用户线程则由参数控制轮询()

票数 1
EN

Stack Overflow用户

发布于 2019-10-25 01:39:15

是的,您是对的,它是等待等待超时时间才使用消息的真正条件。如果它收到消息,它将立即返回,否则它将等待传递超时并返回一个空记录。

Kafka Broker使用以下参数控制消息发送给消费者

  1. fetch.min.bytes:代理将在将响应发送到使用者客户端之前等待填充此数量的数据。
  2. fetch.wait.max.ms:,除非代理有足够的数据来填充响应(fetch.message.max.bytes),否则它将在向消费者客户端发送响应之前等待这么长的时间。

由于处理所消耗的消息,调用下一个轮询()可能需要很长时间。max.poll.interval.ms防止不处理,占用那么多时间,并在max.poll.interval.ms中调用下一次投票,否则消费者离开组并触发重新平衡。您可以获得更多关于这个这里的详细信息。

  1. max.poll.interval.ms:通过增加预期轮询之间的间隔,可以给使用者更多的时间来处理从轮询(Long)返回的一批记录。缺点是,增加此值可能会延迟组的再平衡,因为使用者只会加入对轮询的调用内的再平衡。您可以使用此设置来限制完成再平衡的时间,但如果消费者实际上不能经常调用民意测验,则可能会导致进展较慢。
  2. max.poll.records:使用此设置限制从单个调用返回的总记录到投票。这可以使预测必须在每个轮询间隔内处理的最大值变得更容易。通过调整此值,您可能可以减少轮询间隔,这将减少组再平衡的影响。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58550410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档