spring-boot - 当消费者的处理时间超过 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 分钟重新平衡一次。根据我的理解实际上这不应该发生。只有第一次重新平衡应该发生。
我在这里有什么遗漏吗?
解决方案
是的,如果您超过,总是会发生重新平衡max.poll.interval.ms
- 经纪人认为您的消费者已经死亡,因此收回分区(即使没有更多的消费者)。
当您下次轮询时,会发生重新平衡,并且由于您只有一个消费者,他会再次获得所有 8 个分区。
推荐阅读
- css - 如何删除 Firefox 89+(Proton)中复选框/单选按钮周围的焦点可见样式?
- python - 如何使用 for 循环和导入的 string.punctuation 作为列表删除标点符号?
- python - 刮痧套装店铺位置
- nvidia - Archlinux笔记本电脑屏幕更新后停止工作
- c# - 添加迁移时出现构建错误
- algorithmic-trading - 使用 Binance API 在特定时间关闭/提交订单
- unit-testing - 可重用单元测试 C
- javascript - clearTimeout 运行,但未清除 setTimeout
- r - 使用 dplyr 根据 dplyr 中每组的其他列中的条件添加列,数据为长格式
- flutter - 将 OneSignal 从现有应用程序转移到 Flutter 应用程序