【java开发消息中间件MQ篇】之如何保证mq不重复消费和一致性

164 阅读2分钟

前言: mq的种类很多,知识点也很多,容我娓娓道来,此文章仅代表鄙人的总结和理解,如有错漏,欢迎指正...

什么是幂等性

幂等性就是一个数据或者一个请求,给你重复来了多次,你得确保对应的数据是不会改变的,不能出错。

避免MQ重复消费:

每种mq都可能出现重复消费的问题,避免重复消费这个问题通常不是由mq来保证的,而是由消费者来保证。
避免mq重复消费的方法,实际上就是要做“幂等性”处理

解决方法:

1.使用mq客户端做幂等性处理
2.可在内存中维护一个set存该次消费的id等信息,如果set中查询不到,则说明没有消费过
3.如果写redis没问题,那么存在redis中,因为redis是天然的set幂等性
4.让生产者发送消息时,每条消息加一个全局的唯一id,然后消费时,将该id保存到redis里面。消费时先去redis里面查一下有没有,没有再消费。
5.数据库操作可以设置唯一键,防止重复数据的插入,这样插入只会报错而不会插入重复数据。

更多相关【java开发消息中间件MQ篇】系列文章,请查阅我的个人博客哦...


结语:以往都是看别人的博客进行学习技术,其中不乏有精华博客也有吊儿郎当的CV大法文章,所以决定将自己所学所用所整理的知识分享给大家,主要还是想为了后浪们少走些弯路,多些正能量的博客,如有错漏,欢迎指正,仅希望大家能在我的博客中学到知识,解决到问题,那么就足够了。谢谢大家!(转载请注明原文出处)