MQTT

2021-04-26  本文已影响0人  kool2017

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
上一篇下一篇

猜你喜欢

热点阅读