功能特性
更新時間 2024-12-16 15:39:24
最近更新時間: 2024-12-16 15:39:24
分享文章
本文為您介紹分布式消息服務MQTT的產品功能。
消息模型
支持發布/訂閱消息模型,提供一對多的消息分發方式。這意味著一個發布者(發布消息的客戶端)可以將消息發送到一個或多個訂閱者(訂閱相同主題的客戶端),而不需要建立直接的點對點連接。
以下是MQTT的發布/訂閱消息模型的關鍵特點:
- 主題(Topic): 發布者在發送消息時會將消息與一個主題相關聯。主題是消息的分類或標識,它用于告訴Broker消息應該發送到哪些訂閱者。訂閱者可以選擇訂閱感興趣的主題,以接收與這些主題相關的消息。
- 訂閱(Subscribe): 訂閱者告訴MQTT Broker它對哪些主題感興趣。一旦訂閱者訂閱了特定主題,Broker會將匹配的消息發送給訂閱者。訂閱者可以同時訂閱多個主題。
- 發布(Publish): 發布者將消息發送到特定主題,然后Broker負責將消息傳遞給所有訂閱了該主題的訂閱者。這樣,消息可以廣播給所有訂閱者,實現了一對多的消息分發。
- 多對多通信: MQTT支持多對多通信,這意味著多個發布者可以同時發布消息到相同或不同的主題,多個訂閱者可以同時訂閱一個或多個主題。這種靈活性使MQTT適用于各種應用場景,包括物聯網、實時通信和分布式系統。
- 通配符支持: MQTT還支持通配符訂閱,訂閱者可以使用通配符來匹配多個主題,從而接收與通配符模式匹配的消息。這提供了更高級別的消息過濾和選擇性訂閱。
總之,MQTT的發布/訂閱消息模型使其成為一種非常靈活的消息傳遞協議,特別適用于需要一對多消息分發的應用,如物聯網、實時監控、傳感器數據采集等。它的輕量級特性和廣泛的跨平臺支持也使其成為了許多分布式系統和應用程序的首選通信協議之一。
QoS支持
提供三種級別 QoS支持
QoS0:At-Most-Once 允許消息少量丟失,最多傳輸一次
QoS1:At-Least-Once 確保消息一定到達,可少量重復
QoS2:Exactly-Once 有且僅有一次
QoS在發布和訂閱時都可以設置,以控制消息的傳遞可靠性。需要注意的是,消息從發布者到訂閱者之間是分兩步的,所以要同時設置發布者和訂閱者的QoS,以確保消息可靠地傳遞。
離線消息
MQTT協議支持離線消息傳遞,這允許終端在重新連接到MQTT服務器時獲取未傳遞的消息。這對于許多業務場景都非常有用,特別是在物聯網和實時通信中,當設備可能會斷線并需要在重新連接后獲取之前丟失的消息時。
以下是如何在MQTT中實現離線消息獲取的一般步驟:
- 保留消息(Retained Messages): 在MQTT中,發布者可以標記消息為保留消息。保留消息會在Broker上保存,而不僅僅是傳遞給當前在線的訂閱者。當一個新的訂閱者訂閱與保留消息相關的主題時,它會立即接收到該消息,即使該消息是在其離線期間發布的。
- 持久性會話(Persistent Session): MQTT客戶端可以選擇創建持久性會話,以便在斷線后能夠重新連接并獲取未傳遞的消息。持久性會話會在服務器上保留客戶端的訂閱狀態和未傳遞的消息。當客戶端重新連接時,服務器將恢復其之前的訂閱狀態,并將任何未傳遞的消息發送給它。
- QoS級別(Quality of Service): 使用QoS級別1或2可以確保消息在傳遞時至少被傳遞一次,這有助于確保斷線重連后能夠獲取未傳遞的消息。QoS級別2提供最高級別的消息傳遞保證。
- 持久訂閱(Durable Subscription): 在MQTT中,客戶端可以創建持久訂閱,這允許它在斷線后繼續接收消息。持久訂閱通常與持久性會話結合使用,以確保消息在離線期間不會丟失。
- 設置Clean Session標志: 當客戶端連接到MQTT服務器時,可以設置"Clean Session"標志。如果設置為true,服務器將不會保留客戶端的訂閱狀態和未傳遞的消息,這意味著客戶端將從頭開始,不會獲取離線期間的消息。如果設置為false,則客戶端可以獲取離線期間的消息。
連接查詢
設備連接信息、訂閱關系、分組在線設備數的實時查詢。
軌跡查詢
提供設備維度的上下線軌跡的查詢。
運維能力
在線連接、主題、訂購關系、會話以及消息收發統計歷史查詢并提供指標的閾值設置,超過閾值進行告警提示。