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

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



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

MQTT服務(wù)訂閱

MMQTT服務(wù)取消訂閱

發(fā)送消息

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

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