gpt4 book ai didi

java - Spring Kafka-Consumer.poll() 到底什么时候在幕后被调用?

转载 作者:行者123 更新时间:2023-11-30 02:10:33 26 4
gpt4 key购买 nike

我有一个 Spring Boot 应用程序,其中有一个 Kafka Consumer。

我正在使用具有默认消费者配置的 DefaultKafkaConsumerFactory。我有一个并发设置为 1 的 ConcurrentListenerContainerFactory,并且有一个用 @KafkaListener 注释的方法。

我正在收听一个具有 3 个分区的主题,并且我有 3 个这样的消费者,每个分区都部署在不同的应用程序中。因此,每个消费者都在监听一个分区。

假设在后台调用了对消费者的民意调查并获取了 40 条记录。然后是每条记录,依次提供给用 @KafkaListener 注解的方法,即提供记录 1,等待方法完成处理,提供记录 2,等待方法完成处理,依此类推。是否出现上述情况,或者对于每获取到一条记录,都会创建一个单独的线程,方法调用发生在单独的线程上,这样主线程就不会阻塞,可以更快地轮询记录。

我还想更清楚地了解什么是消息监听器容器以及最终的消息监听器。

提前谢谢您。

最佳答案

在 1.3 及更高版本中,每个消费者有一个线程;监听器处理完上一次轮询的最后一条消息后,将执行下一个 poll()

在早期版本中,有两个线程,当监听器线程处理第一批时,会执行第二个(也可能是第三个)轮询。这是为了避免由于监听器速度慢而导致的重新平衡。线程模型非常复杂,我们必须在必要时暂停/恢复消费者。 KIP-62 修复了重新平衡问题,因此我们能够使用当今使用的更简单的线程模型。

关于java - Spring Kafka-Consumer.poll() 到底什么时候在幕后被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50244744/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com