Mosquitto是一個實現了MQTT3.1協議的代理服務器,由MQTT協議創始人之一的Andy Stanford-Clark開發,它為我們提供了非常棒的輕量級數據交換的解決方案。本文的主旨在於記錄Mosquitto服務的安裝和使用,以備日后查閱。
獲取&安裝
在Linux系統上安裝Mosquitto,本人建議大家使用源碼安裝模式,最新的源碼可從 http://mosquitto.org/files/source/ 地址中獲取。解壓之后,我們可以在源碼目錄里面找到主要的配置文件config.mk,其中包含了所有Mosquitto的安裝選項,詳細的參數說明如下:
# 是否支持tcpd/libwrap功能. WITH_WRAP:=yes # 是否開啟SSL/TLS支持 WITH_TLS:=yes # 是否開啟TLS/PSK支持 WITH_TLS_PSK:=yes # Comment out to disable client client threading support. WITH_THREADING:=yes # 是否使用嚴格的協議版本(老版本兼容會有點問題) WITH_STRICT_PROTOCOL:=yes # 是否開啟橋接模式 WITH_BRIDGE:=yes # 是否開啟持久化功能 WITH_PERSISTENCE:=yes # 是否監控運行狀態 WITH_MEMORY_TRACKING:=yes
由於是測試環境,所以關閉SSL/TLS
# 是否開啟SSL/TLS支持 #WITH_TLS:=yes # 是否開啟TLS/PSK支持 #WITH_TLS_PSK:=yes
在安裝過程中報如下信息
handle_connect.c:33:25: fatal error: uuid/uuid.h: No such file or directory
需要執行如下命令
yum install libuuid-devel
執行安裝命令
make
make install
安裝完成后
cd /etc/mosquitto
cp mosquitto.conf.example mosquitto.conf
執行命令
mosquitto -c /etc/mosquitto/mosquitto.conf
如果報如下異常
1546572122: Error: Invalid user 'mosquitto'.
新增用戶
adduser mosquitto
開啟客戶端進行訂閱
mosquitto_sub -v -t test
執行客戶端時報錯
mosquitto_sub: error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file or directory
執行
cp libmosquitto.so.1 /usr/local/lib
ln -s /usr/local/lib/libmosquitto.so.1 /usr/local/lib/libmosquitto.so.1
ldconfig
開啟客戶端執行發布
mosquitto_pub -t topic01 -m 1111111
訂閱客戶端收到如下信息
topic01 1111111
驗證完成