a.最多一次(Atmost alt="" width="623" height="135" />
b.最少一次(Atleast alt="" width="623" height="257" />
c.僅僅一次(Exactlyonce delivery):QoS=2,最高級(jí)別的服務(wù)質(zhì)量,消息丟失和重復(fù)都是不可接受的。

1.6、支持MQTT協(xié)議的服務(wù)器和客戶端
當(dāng)前流行的開源代理服務(wù)器(MQTT Broker)的實(shí)現(xiàn)有:mosquitto, HiveMQ, Apache ActiveMQ, RabbitMQ, mosca等,MQTT客戶端也有不同操作系統(tǒng)和編程語(yǔ)言下的實(shí)現(xiàn),流行的客戶端庫(kù)(MQTT ClientLibraries)有:Eclipse Paho(支持C,C++, Java, Javascript, Python, Go, C#), M2MQTT(C#), Fusesource MQTTClient(Java), MQTT.js(javascript), libmosquitto(c/c++)等等,通過以上庫(kù)而開發(fā)出的MQTT客戶端應(yīng)用程序有:mosquitto_pub/mosquitto_sub(可運(yùn)行于Linux, Windows, MacOSX操作系統(tǒng)), HiveMQWebsocket Client(Web browser), MyMQTT(Android), MQTTLens(Google Chrome)等等。
二、Mosquitto部署驗(yàn)證
2.1、Ubuntu下安裝Mosquitto
1.源碼包下載:http://mosquitto.org/files/source/
版本:mosquitto-1.4.tar.gz
解壓:tar -zxvf mosquitto-1.4.tar.gz
進(jìn)入目錄:cd mosquitto-1.4
2.編譯安裝
打開配置文件,去掉暫且不需要的功能:
vi config.mk
如:WITH_TLS,WITH_TLS_PSK, WITH_SRV, WITH_WEBSOCKETS, WITH_SOCKS, WITH_UUID等

保存退出:wq
安裝mosquitto
make
make install
2.2、啟動(dòng)mosquitto服務(wù)器
mosquitto默認(rèn)以mosquitto用戶啟動(dòng),所以首先創(chuàng)建mosquitto用戶:
adduser mosquitto
啟動(dòng)代理服務(wù)器:mosquitto -c/etc/mosquitto/mosquitto.conf.example

在啟動(dòng)服務(wù)器過程中有可能遇到以下錯(cuò)誤:找不到libmosquitto.so.1文件,解決方法是添加鏈接庫(kù)路徑:
vi/etc/ld.so.conf.d/liblocal.conf
/usr/local/lib64
/usr/local/lib
退出文件后刷新:ldconfig
重新執(zhí)行:mosquitto -c /etc/mosquitto/mosquitto.conf.example
2.3、啟動(dòng)訂閱者客戶端mosquitto_sub,訂閱test主題
mosquitto_sub客戶端應(yīng)用程序位于/mosquitto-1.4/client目錄下,執(zhí)行./mosquitto_sub-t test, -t表示主題過濾器屬性,后面帶指定的主題過濾器。

2.4、啟動(dòng)發(fā)布者客戶端mosquitto_pub,并且多次發(fā)布主題信息
./mosquitto_pub-t test -l
其中-t表示發(fā)布的主題名,主題名中不允許包含通配符,-l是指通過標(biāo)準(zhǔn)輸入的方式輸入將要發(fā)布的應(yīng)用信息,更多的屬性可通過:./mosquiito_pub --help了解,也可通過官網(wǎng)了解:
http://mosquitto.org/man/mosquitto_pub-1.html。

發(fā)布者發(fā)布應(yīng)用信息:

2.5、發(fā)布者通過鍵入”Ctrl+D”向服務(wù)器發(fā)送DISCONNECT控制報(bào)文,然后正常退出

如果通過”Ctrl+C”終止客戶端程序(異常網(wǎng)絡(luò)斷開),服務(wù)器將提示:Scoket error

本篇文章初步講述了MQTT協(xié)議及以其中的一種實(shí)現(xiàn)為例進(jìn)行部署和體驗(yàn),協(xié)議的詳細(xì)具體內(nèi)容如控制報(bào)文格式等,讀者可自行到官網(wǎng)下載文檔查閱,也可以關(guān)注嵌入式企鵝圈來(lái)獲取共享資源。
接下來(lái)會(huì)對(duì)Mosquitto的mosquito_pub發(fā)布者的客戶端源碼框架進(jìn)行深入分析,掌握MQTT的實(shí)現(xiàn)和編程。