基于MQTT訂閱/發布模型,可以快速實現一對多在線推送功能,并且推送內容可根據自己業務自定義。本次項目“每日Bug看板”選擇實現任務看板中的消息推送,推送內容包括:任務創建、任務認領、任務釋放、任務完成等消息,從而快速實現團隊云協作。

image.png


方案背景

隨著數字化服務的發展,應用系統與終端用戶之間需要構建穩定消息通道,且消息的靈活性與實效性決定了消息的價值,尤其對于下述場景,皆需要即時下發業務狀態變更通知。

→開發測試:

Bug創建、認領、修復等記錄通知

→在線選座:

在線選座、預定、取消等狀態變更通知

→會議室預定

會議室預定、釋放等狀態變更通知

→工單處理

工單錄入、認領、處理等流程通知

→個人待辦

未完成、進行中、已完成等辦理狀態通知

綜上所述,當接入端在近百萬、千萬級的情況下,需要選擇一種安全,穩定,可靠的在線推送方案。

產品設計

基于MQTT訂閱/發布模型,可以快速實現一對多在線推送功能,并且推送內容可根據自己業務自定義。

本次項目選擇實現任務看板中的消息推送,推送內容包括:任務創建、任務認領、任務釋放、任務完成等消息,從而快速實現團隊云協作。

image.png

技術優勢

針對一對多在線推送場景,選擇MQTT訂閱/發布模型具備以下優勢:

高并發,可以允許海量客戶端同時在線;

低延時,通過中間件進行分發,減少消息復制成本;

高可用,服務器支持水平擴展,滿足性能要求;

易集成,已具備多端開源SDK,可快速上線;

輕量級,MQTT客戶端SDK簡潔,連接消耗低(?;钚奶鴪笪?個字節)

功能介紹

1)創建Bug

直接在輸入框輸入Bug描述信息

回車即可添加到未解決目錄下

創建成功后團隊其他用戶均可收到創建提醒

同時所有打開Bug看板的成員均會自動更新看板

2)認領/取消認領Bug

認領Bug

查看未解決的Bugs

選擇要認領的Bug,點擊認領

認領后可以看到該Bug上顯示自己用戶名

團隊其他用戶均可收到認領提醒(該項不需要可以關閉)

取消認領bug

查看未解決的Bugs

選擇要取消認領的Bug,點擊自己用戶名標簽

取消認領后即可釋放該Bug,用戶名標簽自動改回認領

團隊其他用戶均可收到釋放提醒

同時所有打開Bug看板的成員均會自動更新看板

解決Bug

查看未解決的Bugs

選擇自己已解決的Bug

點擊前面的方框,將其狀態改為已解決

該Bug將從未解決列表轉移到已解決列表

團隊其他用戶均可收到解決提醒(該項不需要可以關閉)

同時所有打開Bug看板的成員均會自動更新看板

Bug復測不過

對于復測不過的Bug,需要將其從已解決列表移回未解決列表

在已解決列表選擇復測不通過的Bug

點擊前面勾選狀態的方框,將其狀態改為未解決

團隊其他用戶均可收到提醒

同時所有打開Bug看板的成員均會自動更新看板

刪除Bug

對于錄入錯誤或復測通過的Bug,可執行刪除操作

選擇要刪除的Bug

點擊最后的刪除框,將其從列表刪除

團隊其他用戶均可收到刪除提醒

同時所有打開Bug看板的成員均會自動更新看板

異常提示

認領他人Bug

已被認領的Bug不允許認領

提示“已被xxx認領…”,須釋放后才能認領

該操作僅本人提示,不會推送給認領人

解決未認領Bug

未認領的Bug不允許改為已完成

提示“請先認領…”,認領后才可解決

該操作僅本人提示,不會推送給他人

技術實現

本次MQTT服務器選擇環信MQTT消息云,服務器除了消息路由外,還支持消息存儲、在線狀態查詢、客戶端消息軌跡查詢等功能。

除此以外,還提供了長期免費版,節省了自己搭建服務器的時間(目前市面上沒有免費的MQTT服務器,薅羊毛,不薅白不薅~)

在環信注冊成功后,即可登錄環信MQTT消息云控制臺,【創建應用】并開通MQTT服務,獲取圖中關鍵信息。

image.png

image.png

image.png

示例說明

連接環信MQTT服務并發送消息image.png

MQTT服務訂閱

image.png

MMQTT服務取消訂閱

image.png

發送消息

image.png

部署說明

修改配置

登錄環信MQTT消息云控制臺,獲取上面 技術實現 圖中的關鍵信息,配置在index.js以下參數即可:

image.png

服務部署

直接放到Nginx、Apache、IIS等web容器即可訪問,目前已部署在服務器上,可直接打開鏈接訪問。

在線體驗地址:任務看板登錄入口

代碼下載

上文介紹了在線通知的實現和部署,這里附上整個方案的代碼供大家學習參考,源碼下載

總結

在任務管理這個場景中,會出現創建Bug、認領Bug、完成Bug等多個狀態的頻繁變更,所以高效、穩定的通知給所有關注者(訂閱者)是關鍵。

接入基于訂閱/發布模式的環信MQTT消息云,不僅可以支持海量客戶端同時在線,還支持消息分發,減少消息復制成本,實時向在線客戶端發送消息。另外開發過程中也不需要再關心弱網絡環境、斷線重連、異常處理、海量并發、系統高可用等復雜的技術問題,極大程度上降低了開發成本,一兩天即可搭建一套完整的任務看板功能。

參考網址

1、MQTT其他場景介紹

http://www.rsittlerbooks.com/product/mqtt

2、MQTT文檔介紹

https://docs-im.easemob.com/mqtt/intro