【发布时间】:2020-04-30 23:01:28
【问题描述】:
假设我有一个有 4 个分区的主题。 我正在使用 @KafkaListener 注释使用 spring kafka 微服务来使用记录。 这个微服务是 dockerized,我有它的两个实例。然后将每个实例插入两个分区。
我观察到当我有滞后要赶上时,实例停留在它所在的分区上,并让第二个分区累积滞后。只有当我们停止生成消息并且第一个分区上的延迟被完全消耗时,它才会切换到第二个分区。
我的应用程序中的消费顺序只是部分重要。我的意思是我可以以不同的顺序处理它们,但我不能让消息在分区中停留太久。
简单的解决方案就是拥有四个 docker 实例,一切都会好起来的。
spring-kafka 中是否有一些属性可以让我们在 KafkaListener 插入多个分区时更改轮询策略。这个想法是它会循环轮询每个分区上的轮询分配给每次轮询
感谢阅读!
【问题讨论】:
-
滞后在哪里?在 kafka 内还是您的意思是 lag=msg 处理时间?
-
不确定我是否理解您的问题。对于我的消费者来说,滞后是卡夫卡,因为我消费的速度不够快。但这是我可以接受的。