springboot kafka消费者消费多个分区,某一个分区偏移量突然重置,如何解决?

如下截图,报错Fetch offset 1384269296 is out of range for partition GGSN-GPRS-JS-18-01-9, resetting offset,详细如下:

2021-01-05 10:04:45.311  INFO 28439 --- [ntainer#0-0-C-1] o.a.k.c.consumer.internals.Fetcher       : [Consumer clientId=consumer-2, groupId=GGSN-GPRS-JS-18-01_ggsn_group_js] Fetch offset 1384269296 is out of range for partition GGSN-GPRS-JS-18-01-9, resetting offset
2021-01-05 10:04:45.315  INFO 28439 --- [ntainer#0-0-C-1] o.a.k.c.consumer.internals.Fetcher       : [Consumer clientId=consumer-2, groupId=GGSN-GPRS-JS-18-01_ggsn_group_js] Resetting offset for partition GGSN-GPRS-JS-18-01-9 to offset 1316492213.

 kafka有十个分区,重置的分区为第九分区,该消费者同时消费第八第九两个分区。

请问为啥报错,如何解决呢?

kafka中,consumer启动的时候,它不知道从哪个offset开始读取数据,于是它使用一个最大的长整数,这样会引发OffsetOutOfRangeException,当接收到这个错误后,consumer会根据配置中“autooffset.reset”的值来重置offset的值。解决办法就是把offset设置为0

楼上大佬,不是启动的时候出问题的,而是消费过程中突然报越界错误,把偏移量重置到了最早的偏移量。现在问题点是为什么会报越界错误,就是我提交的偏移量比目前kafka中的偏移量要大,感觉是提前消费了,这个是不应该的,我没有对偏移量做任何修改。

你这个可能原因比较多:是否做了集群?查看下服务器kafka进程和连接数看否是某个成员组奔溃导致的?consumer和patition是否一一对应?被重置的patition的数据量是否溢出?建议每个patition的数据量分配均衡,一个个排查吧。

kafka是做了集群,consumer和patition不是一一对应的,就是不是指定了哪个消费者组消费哪个分区,是自动均匀分配的。被重置的patition的数据量没有溢出,才几千万,每个patition的数据量是均匀分配的,生产者发消息的策略不是指定分区,也没有指定key,是遵循了轮询的原则。

谢谢您的解答