Mosquitto簡介及搭建
文章鋼要:
1、瞭解Mosquitto伺服器
2、在Liunx中搭建Mosquitto伺服器
3、設定Mosquitto叢集
一、Mosquitto簡介
一款實現了訊息推送協議 MQTT v3.1 的開源訊息代理軟體,提供輕量級的,支援可釋出/可訂閱的的訊息推送模式,使裝置對裝置之間的短訊息通訊變得簡單,比如現在應用廣泛的低功耗感測器,手機、嵌入式計算機、微型控制器等移動裝置。一個典型的應用案例就是 Andy Stanford-ClarkMosquitto(MQTT協議創始人之一)在家中實現的遠端監控和自動化。並在 OggCamp 的演講上,對MQTT協議進行詳細闡述。
二、Liunx下安裝Mosquitto
在windows下安裝比較簡單,在windows環境下需要先下載安裝Cygwin,安裝成功後在管網下載Mosquitto.exe之後點選安裝即可。圓子裡有很多教程講解,就不闡述了。並且在實際開發環境中使用windows環境在少數,大部分使用Liunx,因此下面介紹下在Liunx下安裝Mosquitto。
Liunx下安裝Mosquitto方法有2中,下載安裝包到本地安裝以及yum安裝。推薦用yum安裝因為比較方便,如果安裝失敗再考慮使用壓縮包安裝。
使用yum安裝:
1、預設情況下Mosquitto的安裝需要OpenSSL的支援,所以先安裝OpenSSL
yum install gcc gcc-c++
yum install openssl-devel
yum install c-ares-devel
yum install libuuid-devel
yum install wget
yum install cmake
yum install build-essential python quilt devscripts python-setuptools python3
yum install libssl-dev libc-ares-dev uuid-dev daemon openssl-devel
在安裝過程中如果伺服器已經安裝過上述軟體程式,將不會在安裝,如果發現新版本或者未安裝會提示更新和安裝,使用者輸入‘Y’確認安裝即可。
2、下載並編譯安裝mosquitto
下載壓縮包(截止目前2016-11最新的壓縮包是1.4.10):
wget http://mosquitto.org/files/source/mosquitto-1.4.9.tar.gz
解壓:
tar -xzvf mosquitto-1.4.9.tar.gz
進入目錄並安裝:
cd mosquitto-1.4.9
make
make install 3、配置mosquitto.conf檔案整個目錄中最重要的檔案就是mosquitto.conf,將其複製到ect下面
cp mosquitto.conf /etc/mosquitto
修改mosquitto.conf檔案
cd /etc/mosquitto/
使用vi命令開啟mosquitto.conf檔案
vi mosquitto.conf
按“↓”移動游標,找到Default Listeners下的
(可以使用“/Extra listeners”來查詢文字,按“N”鍵可以繼續超找。按“I”鍵進入編輯狀態,按ESC返回。退出是鍵入“:wq”儲存退出。不儲存強制退出“:q!”)
服務的埠號
#port 1883 改為 port 1883
最大連線數,-1表示不限制
#max_connections -1 改為 max_connections -1
因為我的登入使用者是root,所以這裡使用root
#use_username_as_clientid 改為 user root
4、啟動Mosquitto伺服器
執行
mosquitto -c /etc/mosquitto/mosquitto.conf
在啟動的時候會出現報錯的情況,執行mosquitto客戶端程式時出現找不到動態庫:libmosquitto.so.1
錯誤資訊:./mosquitto_sub: error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file or directory
解決方案,執行命令:sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1
和 ldconfig 即可.
如果顯示如下提示說明啟動成功,警告不用管。
5、測試伺服器訂閱與釋出
訂閱服務:
mosquitto_sub -t HelloWord
mosquitto_sub 訂閱命令
-t 訂閱主題
Helloworld 主題名稱,可以隨便取名
釋出服務:
mosquitto_pub -t HelloWord -h localhost -m "Hello Word"
mosquitto_pub 釋出命令
-t 釋出主題
Helloworld 主題名稱
-h 主機地址
localhost 釋出到本地,如果遠端主機直接寫ip地址(不用寫埠號)
-m 釋出的資訊
“Hello world” 釋出的內容
如果一切順,應當如下圖所示,可以成功訂閱一條資訊,並且可以成功釋出資訊,訂閱端可以接受到資訊。