mq和kafka介绍:
https://juejin.im/post/6844903849099018253
最近使用kafka过程中发现了一个问题:
前提:已经关闭了auto commit,改为消费成功消息后手动commit
假设kafka topic目前的消息偏移量是30,目前某个consumer group消费到了偏移量为26的消息,当消费偏移量为27的消息时失败,此时消费的消息偏移量不会提交,如果此时重启系统,可以重新消费偏移量为27的消息,如果此时不重启系统,则会继续消费27以后的消息,若消费成功,则提交偏移量,导致偏移量为27的消息丢失。
解决方案:
创建retry_topic,当消费消息失败时,提交消息到retry_topic,若retry_topic中的消息也消费失败,则发送消息到fail_topic,手动处理fail_topic中的消息。
如何防止消息重复消费:
消息中带有唯一id