首页 > 解决方案 > 当消费者的处理时间超过 max.poll.interval.ms 时,消费者没有下线

问题描述

我正在尝试使用带有版本(2.3.7 Release)的spring boot在spring kafka上做一个简单的poc,以实现消费者批处理的工作方式,以及如果消费者需要更多处理时间,那么重新平衡如何工作,因为我对这个消息传递系统完全陌生。

现在我看到 kafka 与单个消费者重新平衡的问题(不允许并发)。

这些是我设置的属性 max.poll.interval.ms = 50000 和 factory.getContanerProperties.setIdealTimeBetweenPolls(120000) 并使消费者批处理花费的时间超过这个 max.poll.interval.ms。(70 秒)我在这里看到的问题是消费者每 2 分钟间隔触发一次,因此,每 2 分钟重新平衡一次。根据我的理解实际上这不应该发生。只有第一次重新平衡应该发生。

我在这里有什么遗漏吗?

标签: spring-bootspring-kafka

解决方案


是的,如果您超过,总是会发生重新平衡max.poll.interval.ms- 经纪人认为您的消费者已经死亡,因此收回分区(即使没有更多的消费者)。

当您下次轮询时,会发生重新平衡,并且由于您只有一个消费者,他会再次获得所有 8 个分区。


推荐阅读