面试题,如果消息重复了,我们应该如何处理呢
首先,我们不管用什么消息中间件,都会有重复消费的消息的可能,此时如何解决呢
比如,我们的kafka,每一条消息都有一个offset,唯一标识这个条消息,默认情况下...,消费者在消费完消息之后,然后在提交这个offset,消费者更才会认为消息被消费了,但是,我说的是但是,在消费这个提交offset此刻,我们的消费者重启了,没有到这个提交,我们的消费者更就不知道消费者消费了...,然后消费者更会继续消费消息,此时消费者就会重复消费消息
这个种问题如何解决呢,
第一种,消费者,先查一下数据库,看看有没有数据,如果有,可以不消费,或者更新
第二种,把消息放到redis里面,看看有没有...,没有的话,我们再去消费
第三种,直接在表里建立一个唯一索引,如果重复,直接报错,防止重复插入
其实就是让我们的消费者保证幂等性,就可以了