背景
开发过程中碰到了一个问题,某个top一直在消费,而一直存在,偏移量不增不减就在那。
这个小组里面有6个topic,其余5个都消费很快,只有这个topicC出现了阻塞。
同时log出现异常:Failing OffsetCommit request since the consumer is not part of an active group
分析
从代码中看,的确是有问题,其余5个基本上都是更新一下db速度很快。而topicC有很复杂的业务逻辑计算,时间非常长。导致超时未上报给kafka服务端,服务端认为消费失败了,不更新offset。
但是根据日志提示:offset提交请求失败,因为消费者已经不是一个活跃的组内了。为啥既然不是活跃的组内,还能消费消息呢?难道服务端只禁止了不活跃的消费者提交offse,而不禁止消费?
解决方法
方法肯定是将客户端topicC消费中的业务逻辑改为异步处理,及时上报。解决了这个问题。offset恢复正常。
但是不知道这个提示与消费的矛盾具体是什么原理。