如果我从poll()语句中的consumer中提取while True:,我就会发现poll()阻塞了。如果使用者对来自主题(offset = OFFSET_END)的消息是最新的,那么消费者如何执行它的阻塞poll()
消费者是否默认遵守酒吧/订阅的心态,在这种心态下,它会睡觉,等待来自经纪人的发布和广播/信号?
还是消费者在不停地自转,检查这个话题?
如果这有关系的话,我正在使用汇合python客户端。
谢谢!
发布于 2019-10-25 00:45:42
kafka消费者基本上是长轮询循环,由调用轮询()的用户线程驱动(异步)。
整个协议是请求响应,完全由客户端驱动.没有任何形式的经纪人发起的“推”。
fetch.max.wait.ms控制单个代理等待多长时间才能响应(如果没有数据),而阻塞用户线程则由参数控制轮询()
发布于 2019-10-25 01:39:15
是的,您是对的,它是等待等待超时时间才使用消息的真正条件。如果它收到消息,它将立即返回,否则它将等待传递超时并返回一个空记录。
Kafka Broker使用以下参数控制消息发送给消费者
由于处理所消耗的消息,调用下一个轮询()可能需要很长时间。max.poll.interval.ms防止不处理,占用那么多时间,并在max.poll.interval.ms中调用下一次投票,否则消费者离开组并触发重新平衡。您可以获得更多关于这个这里的详细信息。
https://stackoverflow.com/questions/58550410
复制相似问题