MQTT

作者: kool2017 | 来源:发表于2021-04-26 15:18 被阅读0次

    1.什么是MQTT

    MQTT(消息队列遥测传输)是一个基于客户端-服务器的消息发布/订阅传输协议。它工作在TCP/IP协议族上。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。

    2.MQTT应用现状

    因为是工作再TCP/IP协议族上的协议,所以MQTT的网络环境是wifi、网线连接的局域网或者互联网。客户端要有接入网络建立TCP连接的能力。

    MQTT适用于发布/订阅场景,或者说生产/消费场景。

    客户端只要订阅了主题,当主题消息发送到服务端时,服务端可以主动推送消息给客户端。

    发布功能可用于传感器数据的采集。这种应用功能存在于设备监听、环境监测、大数据分析。

    订阅功能可用于事件驱动的设备控制。这种应用功能存在于告警、设备联动。

    发布/订阅这种逻辑易于理解,可理解为:如果设备A发生事件1,则设备B执行事件2。即使非开发人员也能对多个客户端进行编程控制,实现用户场景内的个性化、灵活多变的定制设备控制策略。

    3.MQTT部署和使用示例

    以Mosquitto为例,在linux系统中部署测试:

    (1)官网下载源码包mosquitto-1.6.8.tar.gz (之后的版本缺少cjson依赖,比较麻烦)

    (2)解压到/usr/local路径下

    (3)安装依赖包

    yum install gcc gcc-c++ libstdc++-devel yum install openssl-devel -y yum install c-ares-devel -y yum install uuid-devel -y yum install libuuid-devel -y

    (4)增加用户

    adduser mosquitto

    (5)在mosquitto路径下执行

    make && make install

    (6)进入/etc/mosquitto,执行

    cp mosquitto.conf.example mosquitto.conf

    (7)启动mosquitto

    mosquitto -d -c /etc/mosquitto/mosquitto.conf

    (8)新开一个shell窗口,订阅主题

    mosquitto_sub -i "sub" -v -h 192.168.110.68 -p 9000 -t "test" mosquitto_sub -i "sub" -v -h 192.168.2.102 -p 9000 -t "test" mosquitto_sub -i "sub" -v -h 192.168.2.102 -p 9000 -t "system/alert" -u "admin" -P "admin1111"

    (9)新开一个shell窗口,发布内容,如果订阅窗口收到消息,则mqtt部署成功

    mosquitto_pub -i "pub" -h 192.168.110.68 -p 9000 -t "test" -m "123" mosquitto_pub -i "pub" -h 192.168.2.102 -p 9000 -t "test" -m "123" mosquitto_pub -i "pub" -h 192.168.2.102 -p 9000 -t "system/alert" -m "客户端水位告警" -u "admin" -P "admin1111"

    4.基于Netty的MQTT服务端实现-kmqtt

    主要是实现MQTT协议14个数据包的解析,以及客户端与服务端的交互时序,外加扩展功能。
    相关链接:
     -知识:https://www.jianshu.com/p/e15608d26931
     -源码:https://gitee.com/kool2017/kmqtt
    

    相关文章

      网友评论

          本文标题:MQTT

          本文链接:https://www.haomeiwen.com/subject/ulkdrltx.html