【轉載】MQTT學習筆記——MQTT協議體驗 Mosquitto安裝和使用

http://blog.csdn.net/xukai871105/article/details/39252653html

0 前言linux

     MQTT是IBM開發的一個即時通信協議。MQTT是面向M2M和物聯網的鏈接協議,採用輕量級發佈和訂閱消息傳輸機制。 Mosquitto是一款實現了 MQTT v3.1 協議的開源消息代理軟件,提供輕量級的,支持發佈/訂閱的的消息推送模式,使設備對設備之間的短消息通訊簡單易用。
    若初次接觸MQTT協議,可先理解如下概念:
【MQTT協議特色】——相比於RESTful架構的物聯網系統,MQTT協議藉助消息推送功能,能夠更好地實現遠程控制。
【MQTT協議角色】——在RESTful架構的物聯網系統,包含兩個角色客戶端和服務器端,而在MQTT協議中包括髮布者,代理器(服務器)和訂閱者。
【MQTT協議消息】——MQTT中的消息可理解爲發佈者和訂閱者交換的內容(負載),這些消息包含具體的內容,能夠被訂閱者使用。
【MQTT協議主題】——MQTT中的主題可理解爲相同類型或類似類型的消息集合。
 
1 安裝和使用注意點
1.1 安裝
 
    截止2015年12月,最新版本爲mosquitto-1.4.5
# 下載源代碼包
 
wget  http://mosquitto.org/files/source/mosquitto-1.4.5.tar.gz
# 解壓
tar zxfv mosquitto-1.4.5.tar.gz
# 進入目錄
cd mosquitto-1.4.5
# 編譯
make
# 安裝
sudo make install

1.2 安裝注意點
 
【1】編譯找不到openssl/ssl.h
    【解決方法】——安裝openssl
sudo apt-get install libssl-dev
【2】編譯過程找不到ares.h
sudo apt-get install libc-ares-dev
【3】編譯過程找不到uuid/uuid.h
sudo apt-get install uuid-dev
【4】使用過程當中找不到libmosquitto.so.1
error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file or directory
    【解決方法】——修改libmosquitto.so位置
# 建立連接
sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1
# 更新動態連接庫
sudo ldconfig
【5】make: g++:命令未找到  
    【解決方法】
    安裝g++編譯器
sudo apt-get install g++
 
 
2 簡單測試
    一個完整的MQTT示例包括一個代理器,一個發佈者和一個訂閱者。測試分爲如下幾個步驟:
【1】啓動服務mosquitto。
【2】訂閱者經過mosquitto_sub訂閱指定主題的消息。
【3】發佈者經過mosquitto_pub發佈指定主題的消息。
【4】代理服務器把該主題的消息推送到訂閱者。
 
【測試說明】
    測試環境:ubuntu 14.04 虛擬機
    在本例中,發佈者、代理和訂閱者均爲localhsot,可是在實際的狀況下三種並非同一個設備,在mosquitto中可經過-h(--host)設置主機名稱(hostname)。爲了實現這個簡單的測試案例,須要在linux中打開三個控制檯,分別表明代理服務器、發佈者和訂閱者。
圖1 示例
2.1 啓動代理服務
mosquitto -v
    【-v】打印更多的調試信息
 
2.2 訂閱主題
mosquitto_sub -v -t sensor
    【-t】指定主題,此處爲sensor
    【-v】打印更多的調試信息
 
2.3 發佈內容
mosquitto_pub -t sensor  -m 12
    【-t】指定主題
    【-m】指定消息內容
 
2.4 運行結果
    當發佈者推送消息以後,訂閱者得到如下內容
sensor 12
    而代理服務器控制檯中會出現——鏈接、消息發佈和心跳等調試信息。經過代理服務器的調試輸出能夠對MQTT協議的相關過程有所瞭解。
圖2 代理服務器調試輸出
 
3 總結
    經過 Mosquitto實現MQTT協議代理器(服務器),爲從此的MQTT協議應用作準備。本文並無分析MQTT協議的種種細節,可是但願經過一個簡單的例子把MQTT協議「使用起來」,經過使用過程來理解MQTT協議,在過程當中關注細節收集疑問,再閱讀MQTT協議具體內容,這樣學習起來就不至於枯燥乏味(即便MQTT協議只有40多頁,可是初次閱讀我仍是沒能理解其內涵,只能怪本身智商過低,學術不精。)

4 參考資料
相關文章
相關標籤/搜索