kafka服务端配置的日志保存时间为72H, 但是据业务反馈,在11/14日生产消息且消费者立即消费了,在11/19日重启后重复消费了11/14日生产的消息(据消费者日志来看, 消息的partiton与offset还有消息体完全一致)! 非常疑惑: 根据配置的数据保存时间72H来看, 11/14日生产的数据在11/19日之前早就被删除了, 为什么消费端还能消费呢?
应该是文件句柄没有正常释放,由于某些程序还在占用,导致文件并没有真正删除,所以消费还能消费到。
用 lsof | grep deleted 查看是否有对应的kafka日志文件,应该就能判断。
通过消费者命令,获取最早的消息,打印创建时间戳
看看你获取的命令时间是否符合你的过期时间。
消费者打印了ConsumerRecord,据日志来看重复消费的消息完全一致,包括Createtime
你现在还能查到之前的数据?
现在已经查不到了, 但是根据消费者日志看,确实是在相隔5天之后重复消费了同一条消息
你现在查看,返回的数据,时间是否是正常的呢?
时间是正常的, 跟系统时间完全一致, 消费者commit timestamp也是正确的
那就是说,现在你的kafka集群数据过期策略一切正常,不会查到3天前的数据。
过期策略是正常的, 就是不知道为什么数据过期之后, 消费端还能消费到o(╥﹏╥)o
你的答案