Kafka实际上有个offset的概念,就是每个消息写进去,都有一个offset,代表他的序号,然后consumer消费了数据之后,每隔一段时间,会把自己消费过的消息的offset提交一下,代表我已经消费过了,下次我要是重启啥的,你就让我继续从上次消费到的offset来继续消费吧。
但是凡事总有意外,比如我们之前遇到的,你有时候重启系统,看你怎么重启了,如果遇到点着急的,直接kill进程了,再重启。这会导致consumer有些消息处理了,但是没有来得及提交offset。重启了之后,少数消息会再次消费一次。
其实重复消费不可怕,可怕的是你没有考虑到重复消费之后,怎么保证幂等性
![](https://img.haomeiwen.com/i7689346/538d1627dc6c0210.jpg)
网友评论