MQTT學習——Centos7上安裝Mosquitto和使用

MQTT學習——Centos7上安裝Mosquitto和使用

前言

MQTT是IBM開發的一個即時通訊協議。MQTT是面向M2M和物聯網的連接協議,採用輕量級發佈和訂閱消息傳輸機制。Mosquitto是一款實現了 MQTT v3.1 協議的開源消息代理軟件,提供輕量級的,支持發佈/訂閱的的消息推送模式,使設備對設備之間的短消息通信簡單易用。
若初次接觸MQTT協議,可先理解以下概念:

【MQTT協議特點】——相比於RESTful架構的物聯網系統,MQTT協議藉助消息推送功能,可以更好地實現遠程控制。
【MQTT協議角色】——在RESTful架構的物聯網系統,包含兩個角色客戶端和服務器端,而在MQTT協議中包括髮布者,代理器(服務器)和訂閱者。
【MQTT協議消息】——MQTT中的消息可理解爲發佈者和訂閱者交換的內容(負載),這些消息包含具體的內容,可以被訂閱者使用。
【MQTT協議主題】——MQTT中的主題可理解爲相同類型或相似類型的消息集合。

安裝和使用

1 安裝

截止2017年12月,最新版本爲mosquitto-1.4.14

# 下載源代碼包
wget http://mosquitto.org/files/source/mosquitto-1.4.14.tar.gz
# 解壓
tar zxfv mosquitto-1.4.14.tar.gz
# 進入目錄
cd mosquitto-1.4.14
# 編譯
make
# 安裝
sudo make instal

2 問題

【1】編譯過程找不到ares.h

sudo yum install c-ares-devel

【2】編譯過程中找不到libwebsockets.h

sudo yum -y install libwebsockets-devel.x86_64

【3】使用過程中找不到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

簡單測試

一個完整的MQTT示例包括一個代理器,一個發佈者和一個訂閱者。測試分爲以下幾個步驟:
【1】啓動服務mosquitto。
【2】訂閱者通過mosquitto_sub訂閱指定主題的消息。
【3】發佈者通過mosquitto_pub發佈指定主題的消息。
【4】代理服務器把該主題的消息推送到訂閱者
【測試說明】
測試環境:Centos 7
在本例中,發佈者、代理和訂閱者均爲localhsot,但是在實際的情況下三種並不是同一個設備,在mosquitto中可通過-h(–host)設置主機名稱(hostname)。爲了實現這個簡單的測試案例,需要在linux中打開三個控制檯,分別代表代理服務器、發佈者和訂閱者。
這裏寫圖片描述

1 啓動代理服務

在第一個終端中輸入如下命令:

mosquitto -v

【-v】打印更多的調試信息

2 訂閱主題

在第二個終端中輸入如下命令:

mosquitto_sub -v -t sensor

【-t】指定主題,此處爲sensor
【-v】打印更多的調試信息

3 發佈內容

在第三個終端中輸入如下命令:

mosquitto_pub -t sensor  -m 12

【-t】指定主題
【-m】指定消息內容

4 運行結果

當發佈者推送消息之後,訂閱者(也就是第二個終端)獲得以下內容:

sensor 12

而代理服務器控制檯(也就是第一個終端)中會出現——連接、消息發佈和心跳等調試信息。通過代理服務器的調試輸出可以對MQTT協議的相關過程有所瞭解。
這裏寫圖片描述

總結

通過Mosquitto實現MQTT協議代理器(服務器),爲今後的MQTT協議應用做準備。本文並沒有分析MQTT協議的種種細節,但是希望通過一個簡單的例子把MQTT協議“使用起來”,通過使用過程來理解MQTT協議,在過程中關注細節收集疑問,再閱讀MQTT協議具體內容。

參考:
http://blog.csdn.net/jiesa/article/details/50635222

發佈了114 篇原創文章 · 獲贊 52 · 訪問量 28萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章