您好,欢迎来到宝玛科技网。
搜索
您的当前位置:首页消息队列如何保证幂等性?

消息队列如何保证幂等性?

来源:宝玛科技网

面试官心理剖析: 主要是看你对消息队列数据重复消费的问题,是否有了解,是否知道怎么解决?如果这块不知道,那么面试官会觉得如果交给你做功能,可能会出现多次消费的情况。

回答:

为什么会出现重复消费? 分析:

问题解决:

幂等性:一个请求,不管重复来多少次,结果是不会改变的。

每个消息都会有唯一的消息 id。 1)、先查再保存 每次保存数据的时候,都先查一下,如果数据存在了那么就不保存。这个情况是并发不高的情况。

2)、业务表添加约束条件 如果你的数据库将来都不会分库分表,那么可以在业务表字段加上唯一约束条件(UNIQUE),这样相同的数据就不会保存为多份。

3)、添加消息表 再数据库里面,添加一张消息消费记录表,表字段加上唯一约束条件(UNIQUE),消费完之后就往表里插入一条数据。因为加了唯一约束条件,第二次保存的时候,mysql 就会报错,就插入不进去;通过数据库可以重复消费。

4)、使用 redis 如果你的系统是分布式的,又做了分库分表,那么可以使用 redis 来做记录,把消息 id 存在 redis 里,下次再有重复消息 id 在消费的时候,如果发现 redis 里面有了就不能进行消费。

5)、高并发下 如果你的系统并发很高,那么可以使用 redis 或者 zookeeper 的分布式对消息 id 加锁,然后使用上面的几个方法进行幂等性控制。



链接:https://hacpai.com/article/1542160729029
来源:黑客派

转载于:https://www.cnblogs.com/UncleWang001/p/10606388.html

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baomayou.com 版权所有 赣ICP备2024042794号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务