短信服务的设计
?
【前言】
? ? ? ? 之前系統(tǒng)中已經(jīng)接入短信,由于當(dāng)時(shí)工期比較緊,所以直接在需要的地方(登錄,注冊等)通過Http調(diào)用第三方;后來隨著需要發(fā)送短信的場景越來越多,對短信進(jìn)行了抽離做成單獨(dú)的服務(wù);下面分享一下在抽離服務(wù)時(shí)的思路以及遇到的一些坑。
【設(shè)計(jì)思路】
? ? ? ? ?1.按需要發(fā)送短信的本身特點(diǎn)將短信分為兩類:一是有時(shí)效性短信(如:登錄,注冊);二是非時(shí)效性短信(如:放款成功需要給用戶提醒等)。
? ? ? ? ?2.針對時(shí)效性短信,短信服務(wù)直接給業(yè)務(wù)系統(tǒng)提供Http服務(wù),然后直接去調(diào)用第三方短信平臺;針對非時(shí)效性短信,在短信服務(wù)中寫定時(shí)任務(wù)定時(shí)去摟需要發(fā)送短信的業(yè)務(wù)數(shù)據(jù),然后去調(diào)用第三方短信平臺。
? ? ? ? ?3.短信內(nèi)容拆分成模板和變量的形式,靈活可擴(kuò)展。
? ? ? ? ?4.短信路由初步設(shè)定在管理后臺可以配置哪個(gè)開啟,然后在redis中記錄相應(yīng)渠道的渠道號,在每次發(fā)短信之前去redis中根據(jù)渠道號決定調(diào)用哪個(gè)第三方。
? ? ? ? ?5.表中設(shè)定重試次數(shù),防止由于網(wǎng)絡(luò)等原因某次發(fā)送失敗,同時(shí)也可防止由于手機(jī)號等出現(xiàn)問題無限重復(fù)的發(fā)送。
? ? ? ? ?6.定時(shí)將待發(fā)送的數(shù)據(jù)表中數(shù)據(jù)歸檔到歷史表中,防止因數(shù)據(jù)量過大影響摟數(shù)據(jù)。
【總結(jié)】
? ? ? ? 以上設(shè)計(jì)可以初步滿足一般發(fā)送短信的需求,不過隨著業(yè)務(wù)變動等以及短信余額不足等出現(xiàn)一些新的挑戰(zhàn),下一篇會繼續(xù)為大家介紹關(guān)于自定義短信的實(shí)現(xiàn)思路,以及關(guān)于短信路由的完善相關(guān)設(shè)計(jì)。
總結(jié)
- 上一篇: Java集成openCV实现图片背景切换
- 下一篇: Python的time模块和datati