Confluent.Kafka.KafkaException: Broker: 指定的组生成 ID 无效

Ray*_*lli 5 apache-kafka

环境

  • 3 节点 Kafka 集群
    • 亚马逊 MSK
    • v2.3
  • 1 主题
    • 6个分区
  • 1 个消费者组,2 个消费者
    • 在 Kubernetes 中运行
    • 汇合.NET SDK 1.2.2
    • 除了bootstrap.serversgroup.id,所有默认设置。

问题

首先,我的一个消费者遇到以下异常。

Confluent.Kafka.KafkaException: Broker: Specified group generation id is not valid
   at Confluent.Kafka.Impl.SafeKafkaHandle.Commit(IEnumerable`1 offsets)
   at Confluent.Kafka.Consumer`2.Commit(IEnumerable`1 offsets)
Run Code Online (Sandbox Code Playgroud)

异常被捕获,消费者应该重试,但应用程序却处于空闲状态。容器仍在运行,但不再消耗任何消息。

更奇怪的是,代理从不重新分配消费者的分区,因此消费者在这些分区上的滞后开始增长。消费者似乎既活着(因为代理没有重新分配其分区)又死了(因为它无法提交其偏移量或消耗更多消息)。如果我们干预并手动重新启动消费者,那么分区将被重新分配,情况将恢复正常。

我不完全确定如何处理上述异常。谷歌提供的不多。我拥有的最相关的线索是GitHub 中的这个问题,它涉及代理重启。据我所知,在我的情况下不会发生这种情况。任何帮助将不胜感激。

小智 -2

至少我已经找到了适合我的解决方案。在我的代码中,我手动提交并设置了EnableAutoCommit = false.

不知何故,对于一个偏移量,提交可能被执行两次。我删除了消费者上的手动提交并设置了EnableAutoCommit = true.

之后就成功了。