短信微信等消息发送系统的架构设计
生活随笔
收集整理的這篇文章主要介紹了
短信微信等消息发送系统的架构设计
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
消息發送系統
項目中的一種做法,簡化總結如下
1.對外暴露接口1,供業務方調用
2.接口2的實現就是同步發送各種消息,比如發短信,發微信等,但不保證
3.對外暴露接口2,供業務方調用
4.接口2內部實現,也是發送消息,但是是通過mq解耦的
4.1.業務方調用接口2后,接口2的實現將會發送一個topic;
4.2.發送短信系統,消費這個topic,發送短信
4.3.發送微信的系統,消費這個topic,發送微信的系統
4.4.等等其他系統,都消費這個topic,可擴展
問題1:發送消息,要防重,一條消息不能重復發兩次,因為接口1和接口2都是發短信,很可能業務方會同時調用
在2.2的地方,加入redis防重,每條消息都給一個唯一id,發送前就在redis記錄一下狀態,正在發送,發送完成后改狀態為發送成功
每次發送前都會判斷redis中是否有這個記錄,有就不發了,沒有就加鎖記錄后再發送,發送成功后解鎖
問題2:消息很多的時候,mq重試會造成更多的擠壓,所以這個mq將會關閉重試機制,那么萬一發送失敗又沒有重試,要怎么辦呢?
引入延遲mq,在發送業務mq的同時,再發一條延遲mq,在業務完成后的一定時間內再回去檢查,保證這條消息不會丟失
總結
以上是生活随笔為你收集整理的短信微信等消息发送系统的架构设计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [前台]---js中去掉双引号或者单引号
- 下一篇: 想法记录---实时计算的TopN的实现