參見https://www.cnblogs.com/jack1995/p/10908805.html
冪等性
冪等(idempotent、idempotence)是一個數學與計算機學概念,常見於抽象代數中。
在編程中一個冪等操作的特點是其任意多次執行所產生的影響均與一次執行的影響相同。冪等函數,或冪等方法,是指可以使用相同參數重復執行,並能獲得相同結果的函數。這些函數不會影響系統狀態,也不用擔心重復執行會對系統造成改變。例如,“setTrue()”函數就是一個冪等函數,無論多次執行,其結果都是一樣的.更復雜的操作冪等保證是利用唯一交易號(流水號)實現.
簡單說就是一個請求或者方法調用多次,需要保證數據的准確性
出現重復數據的場景
比如rabbitMQ在消費者消費完數據的時候突然宕機了,確認消費消息的信息沒有發送給消息隊列服務,消費者再次重啟消費時有可能會重復消費消息
解決方案
保證消息的冪等性問題,需要結合具體的業務場景,下面是一些解決思路
- 在內存中、redis、數據庫中建立一個list消費記錄,每次消費消息前先掃描一下這個list
- 利用redis的set集合具有不可重復的特性
- 利用數據庫唯一主鍵