1.什么是MQTT
MQTT(消息隊列遙測傳輸)是一個基于客戶端-服務器的消息發(fā)布/訂閱傳輸協(xié)議。它工作在TCP/IP協(xié)議族上。MQTT協(xié)議是輕量、簡單、開放和易于實現(xiàn)的,這些特點使它適用范圍非常廣泛。
2.MQTT應用現(xiàn)狀
因為是工作再TCP/IP協(xié)議族上的協(xié)議,所以MQTT的網(wǎng)絡環(huán)境是wifi、網(wǎng)線連接的局域網(wǎng)或者互聯(lián)網(wǎng)??蛻舳艘薪尤刖W(wǎng)絡建立TCP連接的能力。
MQTT適用于發(fā)布/訂閱場景,或者說生產(chǎn)/消費場景。
客戶端只要訂閱了主題,當主題消息發(fā)送到服務端時,服務端可以主動推送消息給客戶端。
發(fā)布功能可用于傳感器數(shù)據(jù)的采集。這種應用功能存在于設(shè)備監(jiān)聽、環(huán)境監(jiān)測、大數(shù)據(jù)分析。
訂閱功能可用于事件驅(qū)動的設(shè)備控制。這種應用功能存在于告警、設(shè)備聯(lián)動。
發(fā)布/訂閱這種邏輯易于理解,可理解為:如果設(shè)備A發(fā)生事件1,則設(shè)備B執(zhí)行事件2。即使非開發(fā)人員也能對多個客戶端進行編程控制,實現(xiàn)用戶場景內(nèi)的個性化、靈活多變的定制設(shè)備控制策略。
3.MQTT部署和使用示例
以Mosquitto為例,在linux系統(tǒng)中部署測試:
(1)官網(wǎng)下載源碼包mosquitto-1.6.8.tar.gz (之后的版本缺少cjson依賴,比較麻煩)
(2)解壓到/usr/local路徑下
(3)安裝依賴包
yum install gcc gcc-c++ libstdc++-devel yum install openssl-devel -y yum install c-ares-devel -y yum install uuid-devel -y yum install libuuid-devel -y
(4)增加用戶
adduser mosquitto
(5)在mosquitto路徑下執(zhí)行
make && make install
(6)進入/etc/mosquitto,執(zhí)行
cp mosquitto.conf.example mosquitto.conf
(7)啟動mosquitto
mosquitto -d -c /etc/mosquitto/mosquitto.conf
(8)新開一個shell窗口,訂閱主題
mosquitto_sub -i "sub" -v -h 192.168.110.68 -p 9000 -t "test" mosquitto_sub -i "sub" -v -h 192.168.2.102 -p 9000 -t "test" mosquitto_sub -i "sub" -v -h 192.168.2.102 -p 9000 -t "system/alert" -u "admin" -P "admin1111"
(9)新開一個shell窗口,發(fā)布內(nèi)容,如果訂閱窗口收到消息,則mqtt部署成功
mosquitto_pub -i "pub" -h 192.168.110.68 -p 9000 -t "test" -m "123" mosquitto_pub -i "pub" -h 192.168.2.102 -p 9000 -t "test" -m "123" mosquitto_pub -i "pub" -h 192.168.2.102 -p 9000 -t "system/alert" -m "客戶端水位告警" -u "admin" -P "admin1111"
4.基于Netty的MQTT服務端實現(xiàn)-kmqtt
主要是實現(xiàn)MQTT協(xié)議14個數(shù)據(jù)包的解析,以及客戶端與服務端的交互時序,外加擴展功能。
相關(guān)鏈接:
-知識:http://www.itdecent.cn/p/e15608d26931
-源碼:https://gitee.com/kool2017/kmqtt