MQTT(消息隊列遙測傳輸)是ISO 標準(ISO/IEC PRF 20922)下基於發佈/訂閱範式的消息協議。它工做在 TCP/IP協議族上,是爲硬件性能低下的遠程設備以及網絡情況糟糕的狀況下而設計的發佈/訂閱型消息協議,爲此,它須要一個消息中間件 。編程
從危機百科能夠看出,MQTT是一種協議,不是一種消息隊列。儘管,它有消息隊列的設計,但更側重是一種網絡協議。 通常推薦使用2014年10月30日發佈的MQTT 3.1.1版本,關於MQTT3.1.1版本優點的文章。服務器
MQTT客戶端是運行MQTT客戶端庫並經過網絡鏈接到MQTT中間件的任何設備(從嵌入式設備到服務器)。MQTT客戶端庫可由各類編程語言實現。 例如,Android,Arduino,C,C ++,C#,Go,iOS,Java,JavaScript和.NET。網絡
MQTT中間件是MQTT協議的核心。負責接收全部消息,過濾消息,肯定訂閱每條消息的客戶端,以及將消息發送給這些訂閱的客戶端。還包括對持久會話的管理,以及客戶端的認證和受權等功能。例如:Mosquitto就是由Eclipse基金會維護開發的MQTT中間件。由Apache基金會維護開發的ActiveMQ消息中間件支持MQTT協議。session
這裏借用hivemq的幾張圖.tcp
MQTT協議是基於TCP/IP的。客戶端和中間件創建鏈接的時候:編程語言
參數說明:ide
CONNACK消息包含兩個部分:性能
參數說明:ui
Return Code | Return Code Response |
---|---|
0 | Connection accepted |
1 | Connection refused, unacceptable protocol version |
2 | Connection refused, identifier rejected |
3 | Connection refused, server unavailable |
4 | Connection refused, bad user name or password |
5 | Connection refused, not authorized |
後面,咱們再談談MQTT的訂閱發佈過程.net
MQTT Essentials: Part 1 – Introducing MQTT
MQTT Essentials Part 10: Keep Alive and Client Take-Over
MQTT Essentials Part 3: Client, Broker, and Connection Establishment