MQ Telemetry Transport 消息隊列遙測傳輸協議
IBM 1994開發
MQTT v3.1.1 第4版 OASIS標準
1 to 0/1/Nhtml
MQTT是一個TCP服務端,稱爲broker。
經過這個broker服務,咱們能夠做爲發佈者,發送一條主題消息給broker,而後其餘訂閱者經過消息訂閱機制得到broker的主題消息推送。咱們也能夠做爲訂閱者,訂閱其餘發佈者的主題消息。web
消息隊列存儲消息,直到它們被消耗
消息隊列中只有一個消費者處理消息,MQTT中訂閱主題的每一個訂閱者都會收到消息
消息隊列要提早並明確建立,MQTT中能夠隨時實時建立redis
broker開啓一個host的TCP 1883端口
客戶端鏈接Broker
若是是重連,須要帶上上次ClientID
若是不是重連,能夠指定CleanSession是否清空以前會話
能夠指定兩端之間心跳維持時間
服務端根據參數,重用或開啓會話Session,綁定ClientID
一個會話,能夠服務多個TCP鏈接,取決因而否CleanSession緩存
PersistentSession與CleanSession
session相關信息將會同時保存在broker和client中,session裏包含如下內容:
客戶端的訂閱信息
從broker接收來的尚未ack的消息
發送給client的尚未ack的消息安全
客戶端主動斷開:客戶端發送 DISCONNECT 關閉連接,遺囑失效並刪除
客戶端異常斷開:遺囑消息發佈服務器
心跳消息
鏈接、斷開鏈接消息 10 e0
訂閱、取消訂閱消息 80
發佈消息 30websocket
爲了能知道哪一個客戶端異常斷開,broker定時查詢客戶端狀態。
當檢查到客戶端異常斷開時,就發佈客戶端鏈接時指定的遺囑消息到指定主題。
正常斷開,是不會有遺囑消息發佈的。session
發佈者發佈主題消息時,能夠指定消息是否緩存到broker,做爲對應主題的最後一次消息記錄
訂閱者鏈接後,可一次性獲取想要的主題的所有保留消息socket
樹狀結構,用'/'分隔,如:home/light/brightness
通配符:code
查看服務器的狀態信息
基於主題的消息過濾,可使用通配符來訂閱多個主題的消息
發佈消息時,不可使用通配符,必須指定完整的topic名
若是想發送給多個topic,須要發佈屢次
發佈者在每次發佈消息時都須要設置QoS
可使用基於內存的,可是單點故障狀況下,消息會丟失。
能夠結合外部redis,進行消息外部存儲。
storage_class io.moquette.persistence.redis.RedisStorageService # redis storage redis.host localhost redis.port 6379 redis.password redis.database 0 redis.prefix monitor: