swa*_*il7 6 apache-kafka kafka-consumer-api rebalancing spring-kafka
我使用的是卡夫卡:2.11-1.0.1。该应用程序包含主题“X”的并发度为 5 且分区为 5 的使用者。
当应用程序重新启动并且在分区分配之前在主题“X”上发布消息时,主题“X”的 5 个消费者找到组协调器并向组协调器发送加入组请求。预计会得到团体协调员的答复,但没有收到任何答复。
我已检查 Kafka 服务器日志,但找不到 DEBUG 日志级别的相关日志。
当我运行描述消费者组命令时,出现以下观察结果:
新消息发布在主题“X”上,但消费者没有收到。
heartbeat 和 session.time.out 设置为默认值。
如果消息在主题“X”及其使用者的分区分配之前发布,则会出现此问题。
我的疑问是:为什么重新平衡没有完成以便新的消费者开始消费新生成的消息?
应用程序在消费者组中具有以下消费者
应用程序重新启动时发生了什么以及主题之一是否已发布消息
根本原因:
应用程序重新启动后,组协调器没有等待所有消费者初始化,因此首先发生了不必要的重新平衡,因此消费者A1从分区中获取消息并开始处理它。
解决方案: 为了避免这种不必要的初始重新平衡,kafka提供了一种配置,其中组协调器等待消费者加入新的消费者组。文档
group.initial.rebalance.delay.ms
检查了我的 kafka server.properties ,它被设置为 0。尝试使用默认值,即 3 秒。避免了初始重新平衡,GC 在应用程序重新启动时等待 3 秒,此时所有其他消费者都已初始化。所有消费者都发送了加入组请求,因为所有 GC 都收到了来自所有消费者的请求。GC 没有任何延迟地响应,重新平衡进行并成功完成。
| 归档时间: |
|
| 查看次数: |
10206 次 |
| 最近记录: |