
方案背景
隨著數(shù)字化服務(wù)的發(fā)展,應(yīng)用系統(tǒng)與終端用戶(hù)之間需要構(gòu)建穩(wěn)定消息通道,且消息的靈活性與實(shí)效性決定了消息的價(jià)值,尤其對(duì)于下述場(chǎng)景,皆需要即時(shí)下發(fā)業(yè)務(wù)狀態(tài)變更通知。
→開(kāi)發(fā)測(cè)試:
Bug創(chuàng)建、認(rèn)領(lǐng)、修復(fù)等記錄通知
→在線(xiàn)選座:
在線(xiàn)選座、預(yù)定、取消等狀態(tài)變更通知
→會(huì)議室預(yù)定
會(huì)議室預(yù)定、釋放等狀態(tài)變更通知
→工單處理
工單錄入、認(rèn)領(lǐng)、處理等流程通知
→個(gè)人待辦
未完成、進(jìn)行中、已完成等辦理狀態(tài)通知
綜上所述,當(dāng)接入端在近百萬(wàn)、千萬(wàn)級(jí)的情況下,需要選擇一種安全,穩(wěn)定,可靠的在線(xiàn)推送方案。
產(chǎn)品設(shè)計(jì)
基于MQTT訂閱/發(fā)布模型,可以快速實(shí)現(xiàn)一對(duì)多在線(xiàn)推送功能,并且推送內(nèi)容可根據(jù)自己業(yè)務(wù)自定義。
本次項(xiàng)目選擇實(shí)現(xiàn)任務(wù)看板中的消息推送,推送內(nèi)容包括:任務(wù)創(chuàng)建、任務(wù)認(rèn)領(lǐng)、任務(wù)釋放、任務(wù)完成等消息,從而快速實(shí)現(xiàn)團(tuán)隊(duì)云協(xié)作。

技術(shù)優(yōu)勢(shì)
針對(duì)一對(duì)多在線(xiàn)推送場(chǎng)景,選擇MQTT訂閱/發(fā)布模型具備以下優(yōu)勢(shì):
- 高并發(fā),可以允許海量客戶(hù)端同時(shí)在線(xiàn);
- 低延時(shí),通過(guò)中間件進(jìn)行分發(fā),減少消息復(fù)制成本;
- 高可用,服務(wù)器支持水平擴(kuò)展,滿(mǎn)足性能要求;
- 易集成,已具備多端開(kāi)源SDK,可快速上線(xiàn);
- 輕量級(jí),MQTT客戶(hù)端SDK簡(jiǎn)潔,連接消耗低(;钚奶鴪(bào)文2個(gè)字節(jié))
功能介紹
1)創(chuàng)建Bug
直接在輸入框輸入Bug描述信息
回車(chē)即可添加到未解決目錄下
創(chuàng)建成功后團(tuán)隊(duì)其他用戶(hù)均可收到創(chuàng)建提醒
同時(shí)所有打開(kāi)Bug看板的成員均會(huì)自動(dòng)更新看板
2)認(rèn)領(lǐng)/取消認(rèn)領(lǐng)Bug
認(rèn)領(lǐng)Bug
查看未解決的Bugs
選擇要認(rèn)領(lǐng)的Bug,點(diǎn)擊認(rèn)領(lǐng)
認(rèn)領(lǐng)后可以看到該Bug上顯示自己用戶(hù)名
團(tuán)隊(duì)其他用戶(hù)均可收到認(rèn)領(lǐng)提醒(該項(xiàng)不需要可以關(guān)閉)
取消認(rèn)領(lǐng)bug
查看未解決的Bugs
選擇要取消認(rèn)領(lǐng)的Bug,點(diǎn)擊自己用戶(hù)名標(biāo)簽
取消認(rèn)領(lǐng)后即可釋放該Bug,用戶(hù)名標(biāo)簽自動(dòng)改回認(rèn)領(lǐng)
團(tuán)隊(duì)其他用戶(hù)均可收到釋放提醒
同時(shí)所有打開(kāi)Bug看板的成員均會(huì)自動(dòng)更新看板
解決Bug
查看未解決的Bugs
選擇自己已解決的Bug
點(diǎn)擊前面的方框,將其狀態(tài)改為已解決
該Bug將從未解決列表轉(zhuǎn)移到已解決列表
團(tuán)隊(duì)其他用戶(hù)均可收到解決提醒(該項(xiàng)不需要可以關(guān)閉)
同時(shí)所有打開(kāi)Bug看板的成員均會(huì)自動(dòng)更新看板
Bug復(fù)測(cè)不過(guò)
對(duì)于復(fù)測(cè)不過(guò)的Bug,需要將其從已解決列表移回未解決列表
在已解決列表選擇復(fù)測(cè)不通過(guò)的Bug
點(diǎn)擊前面勾選狀態(tài)的方框,將其狀態(tài)改為未解決
團(tuán)隊(duì)其他用戶(hù)均可收到提醒
同時(shí)所有打開(kāi)Bug看板的成員均會(huì)自動(dòng)更新看板
刪除Bug
對(duì)于錄入錯(cuò)誤或復(fù)測(cè)通過(guò)的Bug,可執(zhí)行刪除操作
選擇要?jiǎng)h除的Bug
點(diǎn)擊最后的刪除框,將其從列表刪除
團(tuán)隊(duì)其他用戶(hù)均可收到刪除提醒
同時(shí)所有打開(kāi)Bug看板的成員均會(huì)自動(dòng)更新看板
異常提示
認(rèn)領(lǐng)他人Bug
已被認(rèn)領(lǐng)的Bug不允許認(rèn)領(lǐng)
提示“已被xxx認(rèn)領(lǐng)…”,須釋放后才能認(rèn)領(lǐng)
該操作僅本人提示,不會(huì)推送給認(rèn)領(lǐng)人
解決未認(rèn)領(lǐng)Bug
未認(rèn)領(lǐng)的Bug不允許改為已完成
提示“請(qǐng)先認(rèn)領(lǐng)…”,認(rèn)領(lǐng)后才可解決
該操作僅本人提示,不會(huì)推送給他人
技術(shù)實(shí)現(xiàn)
本次MQTT服務(wù)器選擇環(huán)信MQTT消息云,服務(wù)器除了消息路由外,還支持消息存儲(chǔ)、在線(xiàn)狀態(tài)查詢(xún)、客戶(hù)端消息軌跡查詢(xún)等功能。
除此以外,還提供了長(zhǎng)期免費(fèi)版,節(jié)省了自己搭建服務(wù)器的時(shí)間(目前市面上沒(méi)有免費(fèi)的MQTT服務(wù)器,薅羊毛,不薅白不薅~)
在環(huán)信注冊(cè)成功后,即可登錄環(huán)信MQTT消息云控制臺(tái),【創(chuàng)建應(yīng)用】并開(kāi)通MQTT服務(wù),獲取圖中關(guān)鍵信息。



示例說(shuō)明
連接環(huán)信MQTT服務(wù)并發(fā)送消息

MQTT服務(wù)訂閱

MMQTT服務(wù)取消訂閱

發(fā)送消息

部署說(shuō)明
修改配置
登錄環(huán)信MQTT消息云控制臺(tái),獲取上面 技術(shù)實(shí)現(xiàn) 圖中的關(guān)鍵信息,配置在index.js以下參數(shù)即可:

服務(wù)部署
直接放到Nginx、Apache、IIS等web容器即可訪(fǎng)問(wèn),目前已部署在服務(wù)器上,可直接打開(kāi)鏈接訪(fǎng)問(wèn)。
在線(xiàn)體驗(yàn)地址:任務(wù)看板登錄入口
代碼下載
上文介紹了在線(xiàn)通知的實(shí)現(xiàn)和部署,這里附上整個(gè)方案的代碼供大家學(xué)習(xí)參考,源碼下載
總結(jié)
在任務(wù)管理這個(gè)場(chǎng)景中,會(huì)出現(xiàn)創(chuàng)建Bug、認(rèn)領(lǐng)Bug、完成Bug等多個(gè)狀態(tài)的頻繁變更,所以高效、穩(wěn)定的通知給所有關(guān)注者(訂閱者)是關(guān)鍵。
接入基于訂閱/發(fā)布模式的環(huán)信MQTT消息云,不僅可以支持海量客戶(hù)端同時(shí)在線(xiàn),還支持消息分發(fā),減少消息復(fù)制成本,實(shí)時(shí)向在線(xiàn)客戶(hù)端發(fā)送消息。另外開(kāi)發(fā)過(guò)程中也不需要再關(guān)心弱網(wǎng)絡(luò)環(huán)境、斷線(xiàn)重連、異常處理、海量并發(fā)、系統(tǒng)高可用等復(fù)雜的技術(shù)問(wèn)題,極大程度上降低了開(kāi)發(fā)成本,一兩天即可搭建一套完整的任務(wù)看板功能。
參考網(wǎng)址
1、MQTT其他場(chǎng)景介紹
http://www.easemob.com/product/mqtt
2、MQTT文檔介紹
https://docs-im.easemob.com/mqtt/intro