在海量訂單生成的業務高峰期,生產端有可能就會重復發送了消息,這時候消費端就要實現冪等性,這就意味著我們的消息永遠不會被消費多次,即使我們收到了一樣的消息。業界主流的冪等性有下面兩種操作。
[TOC]
# 1. 唯一ID+指紋碼機制
指紋碼是我們的一些規則或者時間戳加別的服務給到的唯一信息碼,它并不一定是我們系統生成的,基本都是由我們的業務規則拼接而來,但是一定要保證唯一性,然后就利用查詢語句進行判斷這個 id 是否存在數據庫中,優勢就是實現簡單就一個拼接,然后查詢判斷是否重復;劣勢就是在高并發時,如果是單個數據庫就會有寫入性能瓶頸。當然也可以采用分庫分表提升性能,但也不是我們最推薦的方式。
<br/>
# 2. Redis 原子性
利用 redis 執行 setnx 命令,天然具有冪等性,從而實現不重復消費。
- 消息隊列
- 什么是MQ
- MQ的作用
- MQ的分類
- MQ的選擇
- RabbitMQ
- RabbitMQ是什么
- 四大核心概念
- 工作原理
- 環境搭建
- windows系統下的搭建
- centos7系統下的搭建
- 常用命令
- 服務相關命令
- 管理用戶命令
- 管理隊列命令
- 第一個RabbitMQ程序
- 工作隊列
- 輪詢分發消息
- 消息應答
- 持久化
- 發布確認
- 發布確認原理
- 發布確認策略
- 交換機概念
- 交換機類型
- 無名交換機
- Fanout交換機
- Direct交換機
- Topic交換機
- 死信隊列
- 死信概念
- 死信來源
- 死信實戰
- 延遲隊列
- 什么是延遲隊列
- TTL設置方式
- 隊列TTL延遲隊列
- 消息TTL延遲隊列
- 插件打造延遲隊列
- 延遲隊列總結
- 發布確認高級
- 代碼實現
- 回退消息
- 備份交換機
- 冪等性
- 冪等性概念
- 消息重復消費
- 消費端冪等性保障
- 優先級隊列
- 使用場景
- 設置優先級
- 惰性隊列
- 什么是惰性隊列
- 隊列的兩種模式
- 聲明惰性隊列
- RabbitMQ集群
- 為什么要搭建集群
- 集群搭建步驟
- 集群工作方式
- 脫離集群
- 鏡像隊列
- 高可用負載均衡