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
验证完成