一、rabbitmq出現消息重復的場景
A:消息消費成功,事務已經提交,ack時,機器宕機,導致沒有ack成功,
Broker的消息重新由unack變為ready,並發送給其他消費者
B:消息消費失敗,由於重試機制,自動又將消息發送出去
C、成功消費,ack時宕機,消息由unack變為ready,Broker又重新發送
解決方案、
1、消息者的業務消費接口應該設計為冪等性,比如扣庫存有工作單的狀態標志
2、在數據庫消息表,每當消息到達消費端時,通過對消息的狀態進行判斷,防止消息重復消費