Springboot整合kafka 报错 Commit cannot be completed since the group has already rebalanced and assigned the partitions
报错信息
Commit cannot be completed since the group has already rebalanced and assigned the partitions
如何理解
这里是说提交commit失败, 因为这个组已经重新分配了
产生原因
正常情况下, kafka会有一个配置用于设置一条消息的过期时间, 在规定时间内, 如果消费者提交了消费完成的信息, 那么就可以正常的分配下一条记录给消费者, 并且将当前记录的状态记为"已消费"状态, 对消息队列做一个标识, 避免重复消费
如何解决
kafka中配置的规定返回消息时间, 默认是300s, 也就是5分钟, 但是有一些业务逻辑处理起来比较复杂, 数据量又比较庞大, 那么5分钟是肯定处理不完的, 比如导入一个5G的文件, 然后逐条插入数据库, 这就需要消耗很长时间, 所以需要设置一下kafka的最大间隔时间
在application-dev.yml文件中配置如下
也就是配置
spring:
kafka:
consumer:
properties:
max.poll.interval.ms: 86400000
86400000是一天的毫秒数, 我这个业务需求有一天一夜足矣
至此, 问题完美修复!