Mosquitto是一个开源(BSD许可证)的消息代理,实现MQTT(消息队列遥测传输)协议版本3.1,3.1.1,5.0。
MQTT(MQ Telemetry Transport),消息队列遥测传输协议,轻量级的发布/订阅协议,适用于一些条件比较苛刻的环境,进行低带宽、不可靠或间歇性的通信。值得一提的是mqtt提供三种不同质量的消息服务:
Qos0:“至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
Qos1:“至少一次”,确保消息到达,但消息重复可能会发生。
Qos2:“只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。
root权限编译安装配置
[root@hyx]# yum -y install gcc gcc-c++ libstdc++-devel
[root@hyx]# yum -y install openssl-devel
[root@hyx]# yum -y install c-ares-devel
[root@hyx]# yum -y install uuid-devel
[root@hyx]# yum -y install libuuid-devel
[root@hyx]# wget https://mosquitto.org/files/source/mosquitto-1.6.10.tar.gz
[root@hyx]# tar zxf mosquitto-1.6.8.tar.gz
[root@hyx]# cd mosquitto-1.6.8
[root@hyx]# make && make install
找不到libmosquitto.so.1
mosquitto_sub: error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file or directory
解决办法
ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1
ldconfig
没有用户mosquitto
解决办法
修改配置文件mosquitto.conf
#user mosquitto
user root
[root@hyx]# cd /etc/mosquito
[root@hyx]# mv mosquitto.conf.example mosquitto.conf
[root@hyx]# vim mosquitto.conf
修改启动用户
#user mosquitto
user dever #centos账号
修改设备连接需要用户密码验证
allow_anonymous false
password_file /etc/mosquitto/pwfile
用户密码文件配置
[root@hyx]# mv pwfile.example pwfile
[root@hyx]# mosquitto_passwd /etc/mosquitto/pwfile huangyuxi
Password: (123456)
Reenter password:
[root@hyx]#
[dever@hyx]# mosquitto -v
[dever@hyx]# mosquitto_sub -h 127.0.0.1 -u huangyuxi -P 123456 -t sensor -v
[dever@hyx]# mosquitto_pub -h 127.0.0.1 -u huangyuxi -P 123456 -t sensor -m ‘test’