消息佇列MQ可作為規則引擎對接的擴展增值服務使用,配合物聯網套件,可形成具備設備接入、設備管理、消息分發、應用承載能力的高性能服務組合
消息佇列MQ具有如下特點:
消息緩存
MQ服務支援消息緩存,可以有效緩存由於網路或者應用伺服器異常等原因導致的未能被即時消費的消息
佇列緩存具有一定的容量上限,當佇列容量達到上限後,服務將回收佇列頭部的數據
削峰去穀
MQ服務可以有效緩衝前向突發的大併發量設備消息,以較低的較為平均的速率推送給消費用戶端,從而減輕消費端壓力
最多一次與至少一次
用戶可以通過配置消息鎖定時間來實現最多消費一次以及至少消費一次的消息模式,若啟用消息鎖定時間,在該時間內,若用戶端無應答確認,則認為消費失敗,鎖定時間段之後,用戶端可以再次消費到該未被確認的消息
消息過期時間
用戶可以自訂消息過期時間,進入佇列時長達到消息過期時間的消息將會被刪除,即服務會刪除進入佇列超過一定時間的消息
順序消息
對於同一個topic,所有消息按照先入先出(FIFO)的順序進行發佈和消費,保證嚴格的消息順序性
消息回溯
支援用戶自訂消費位置,重新消費佇列中消息,例如設置為從頭部消費,完成設置後,用戶端將消費到來自佇列中自訂位置之後的消息
只要消息沒有因為超時或者緩存區已滿而被刪除,用戶均可以通過指定消費位置重新消費到該消息
多方獨立消費
服務支援用戶為一個佇列創建多個消費代理(sub),消費代理之間相互獨立,可以分別採用不同的配置消費同一佇列中的數據
單點消費與集群消費
MQ服務支援一個或者多個client同時與同一個sub(訂閱subscription)建立訂閱關係
當多個client同時與同一個topic中的同一個sub建立訂閱關係時,MQ服務會認為用戶端處於集群消費模式,消息將被均衡的發送至每個client,且每條消息僅能夠被一個用戶端消費,如下圖所示:
與OneNET 同為數據推送場景服務的HTTP數據推送服務相比,消息佇列MQ具有如下優勢:
HTTP數據推送 | 消息佇列MQ | |
---|---|---|
消息緩存 | 不支持 | 支持 |
集群消費 | 需要在應用側做負載 | 支持 |
消息回溯 | 不支持 | 支持 |
多方消費 | 不支持 | 支援一對多消費模式 |
時延 | 較高 | 較低 |