Ind*_*nde 4 java apache-kafka spring-kafka
我有一个 Spring Boot 应用程序,其中有一个 Kafka Consumer。
我正在使用带有默认消费者配置的 DefaultKafkaConsumerFactory。我有一个并发设置为 1 的 ConcurrentListenerContainerFactory,我有一个用 @KafkaListener 注释的方法。
我正在听一个有 3 个分区的主题,我在不同的应用程序中部署了 3 个这样的消费者。因此,每个消费者都在监听一个分区。
假设在后台调用了对消费者的轮询并获取了 40 条记录。然后是每条记录,依次提供给用@KafkaListener 注释的方法,即提供记录1,等待方法完成处理,提供记录2,等待方法完成处理等等。是否发生上述情况,或者对于获得的每条记录,都会创建一个单独的线程并在单独的线程上进行方法调用,因此主线程不会阻塞并且可以更快地轮询记录。
我还想更清楚地了解消息侦听器容器是什么以及最终的消息侦听器。
先感谢您。
在 1.3 及以上版本中,每个消费者有一个线程;nextpoll()
是在侦听器处理完上一个轮询的最后一条消息后执行的。
在早期版本中,有两个线程,并且在侦听器线程处理第一批时执行了第二个(可能是第三个)轮询。这是为了避免由于缓慢的侦听器而导致重新平衡。线程模型非常复杂,我们必须在必要时暂停/恢复消费者。KIP-62 修复了重新平衡问题,因此我们能够使用今天使用的更简单的线程模型。
归档时间: |
|
查看次数: |
3677 次 |
最近记录: |