文章鋼要:
1、了解Mosquitto服務器
2、在Liunx中搭建Mosquitto服務器
3、設置Mosquitto集群
一、Mosquitto簡介
一款實現了消息推送協議 MQTT v3.1 的開源消息代理軟件,提供輕量級的,支持可發布/可訂閱的的消息推送模式,使設備對設備之間的短消息通信變得簡單,比如現在應用廣泛的低功耗傳感器,手機、嵌入式計算機、微型控制器等移動設備。一個典型的應用案例就是 Andy Stanford-ClarkMosquitto(MQTT協議創始人之一)在家中實現的遠程監控和自動化。並在 OggCamp 的演講上,對MQTT協議進行詳細闡述。
Mosquitto管網:http://mosquitto.org/
Mosquitto最新的源碼:http://mosquitto.org/files/source/
二、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
整個目錄中最重要的文件就是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” 發布的內容
如果一切順,應當如下圖所示,可以成功訂閱一條信息,並且可以成功發布信息,訂閱端可以接受到信息。