MQTT协议实践

一、MQTT简介

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是IBM推出的一种针对移动终端设备的基于TCP/IP的发布/预订协议,可以连接大量的远程传感器和控制设备:

轻量级的消息订阅和发布(publish/subscribe)协议
建立在TCP/IP协议之上
1.1 MQTT的特点:
(1)MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。
(2)MQTT协议是轻量、简单、开放和易于实现的,这些特点使其使用于在物联网、小型设备、移动应用等方面应用。
(3)MQTT可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务
使用MQTT的消息发布服务质量

(4)“至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
(5)“至少一次”,确保消息到达,但消息重复可能会发生。
(6)“只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。
1.2 MQTT的三种角色::
(1)Broker代理:很多人理解为中间件,当然可以这样子认为。他就是一个中间件。用于处理信息并发送到相应的订阅者。
(2)发布者:用于发布信息到代理上面。注意:发布者也可以是订阅者。
(3)订阅者:就是用于接受信息的客户端。
1.3 由于物联网的环境是非常特别的,所以MQTT遵循以下设计原则:
(1)精简,不添加可有可无的功能。
(2)发布/订阅(Pub/Sub)模式,方便消息在传感器之间传递。
(3)允许用户动态创建主题,零运维成本。
(4)把传输量降到最低以提高传输效率。
(5)把低带宽、高延迟、不稳定的网络等因素考虑在内。
(6)支持连续的会话控制。
(7)理解客户端计算能力可能很低。
(8)提供服务质量管理。
(9)假设数据不可知,不强求传输数据的类型与格式,保持灵活性。

二、使用Apollo搭建MQTT服务器

2.1下载Apache Apoll
https://pan.baidu.com/s/1c2NJmJe
MQTT协议实践_第1张图片

2.2解压之后的文件如图所示
MQTT协议实践_第2张图片
2.3配置java的jdk
将java路径添加到系统变量中

MQTT协议实践_第3张图片

2.4创建apollo用户
在cmd命令行窗口中切换到刚刚解压的bin目录下
运行命令:

apollo.cmd create apollogb

注:(apollogb是自己取的名字)。
MQTT协议实践_第4张图片
在解压后的bin目录下就会创建一个用户:
MQTT协议实践_第5张图片

2.5开启apollo服务
在cmd窗口中的创建用户的bin目录下执行如下命令:

apollo-broker.cmd run

但是这种方式cmd窗口不能关掉,关掉之后,就无法进行访问。
如图所示:
MQTT协议实践_第6张图片
MQTT协议实践_第7张图片
至此,MQTT服务器已经搭建完成。

三、创建一个客户端进行连接

3.1下载客户端
https://pan.baidu.com/s/1mi5mdRi

MQTT协议实践_第8张图片

3.2解压之后
打开文件夹,点击运行paho应用程序
MQTT协议实践_第9张图片

3.3添加连接并设置
MQTT协议实践_第10张图片
输入用户名和密码:
MQTT协议实践_第11张图片
连接成功后,服务器上会出现如下显示
MQTT协议实践_第12张图片

四、消息发布与订阅

4.1客户端1:订阅hello主题
MQTT协议实践_第13张图片

4.2客户端2:发布hello主题

MQTT协议实践_第14张图片
4.3在客户端2发布hello主题后,客户端1就会收到客户端2发送出来的主题中的内容。
MQTT协议实践_第15张图片
至此,MQTT协议的简单实践就完成了

五、参考资料

https://blog.csdn.net/qq_43279579/article/details/111873008
https://zhuanlan.zhihu.com/p/20888181

你可能感兴趣的:(网络编程)