08 | MQTT:在实践中掌握一个通信协议
体验 MQTT
- 深入了解
- 翻译
- 解释
- 总结
MQTT协议在物联网系统中扮演着重要角色,本文通过实践向读者展示了如何掌握这一通信协议。作者首先通过安装hbmqtt并使用其命令行工具进行订阅和发布消息,展示了MQTT的简单易用。文章还强调了MQTT生态的完善,包括开源项目、不同语言的客户端实现以及商业公司提供的更丰富的Broker实现,为开发者提供了丰富的选择和支持。此外,文章还分析了MQTT协议本身的优秀设计,包括契合物联网应用场景的发布-订阅模式、轻量级特性、低功耗优化设计、多种服务质量等级以及数据安全支持。MQTT协议的轻量级特性体现在采用二进制的编码格式,以及消息交互流程设计的简单性。另外,MQTT协议注重低功耗的优化设计,如Keepalive机制和重复主题特性,以节约电量和网络资源。此外,MQTT协议设计了3种不同的QoS级别,以应对网络环境不稳定的问题。最后,文章介绍了MQTT协议的安全传输机制,包括用户名/密码验证和SSL/TLS加密通信方式。总的来说,本文通过实例和分析,全面展现了MQTT协议的简单易用、优秀设计以及在物联网系统中的重要性。MQTT协议生态丰富,采用适合物联网应用场景的发布-订阅模式,具有轻量级特性和低功耗优化设计,同时支持多种服务质量等级和数据安全传输。这使得MQTT成为物联网系统中的重要选择,为开发者提供了丰富的支持和灵活性。
《物联网开发实战》,新⼈⾸单¥59
全部留言(32)
- 最新
- 精选
- 莹老师,我试了一下你给的代码 hbmqtt_sub --url mqtt://mqtt.eclipse.org:1883 -t /geektime/iot,这个URL有问题mqtt.eclipse.org我怎么也连不上;但是换成它页面上给的mqtt.eclipseprojects.io就没有问题。还有python 3.9 似乎重写了一些关于lock的代码,hbmqtt会有问题,Python 3.8就没问题。
作者回复: 对,也可以尝试用mosquitto的地址
2020-12-18513 - like_wind自己用EMQ X搭建了一个broker服务器,收发消息成功,支持国产软件,不过EMQ文档真的很全。附上文档链接:https://docs.emqx.cn/cn/broker/latest/getting-started/install.html
作者回复: 👍
2020-12-2210 - 曙光测试了,如果pub和sub都是2,就是2组4次交互。如果只有pub为2,一组4次交互。但如果pub是1,sub为2,则测试结果和sub,pub都为1的情况一样,sub和broker之间不是4次交互。
作者回复: 赞👍
2021-04-144 - YueShiClient 在重复发送一个主题的消息时,可以从第二次开始,将主题名长度设置为 0,这样 Broker 会自动按照上次的主题来处理消息。这种情况对传感器设备来说十分常见,所以这个特性在工作中很有实际意义。 这段没有太懂, 有老哥给提示一下吗? 多谢了
作者回复: 比如发生是主题是“/geektime/iot”,第一次需要在信息体中包含这个主题的字符,第二次就可以省掉这个主题名字了。
2020-11-273 - ACK作为智能锁嵌入式开发者,觉得老师讲的东西很受用😃
作者回复: 谢谢你的留言:)
2020-11-2523 - 9ambition针对思考题,我的回答是这样子的: 对于发布者(pub),采用QoS = 1,也就意味着就算broker已经收到此发布者发送的数据,发布者还是会重复一样的数字,对于发布者本身来说就是不想自己发出的每一条信息被遗漏。 对于订阅者(sub),采用QoS = 2, 说明sub在面对订阅主题时,每一次从broker获得数据前都会经过publish, pubreck, pubrel, pubcomp这四步后才能从订阅主题处获得一次数据。 所以broker的行为只需要从pub-broker和broker-sub两步看就可以: 对于pub-broker的部分,broker只需要进行puback来确认broker已经收到pub发送的数据了。 对于broker-sub的部分,broker一定要先确认自己执行了从pub获得的数据发出去的行为,也就是publish,接着确认收到sub的回复:pubrec来说明broker确实成功把数据发出去了;接着确认broker确实把数据发出去了,也就是pubrel;最后让sub回复pubcomp来说明sub确实收到broker发出的数据了。就相当于publish和pubrec是确认broker发数据的行为,pubrel和pubcomp是确认broker的数据内容已经被发送和被sub接收。
作者回复: 需要实际实验一下,测试过程不太复杂
2021-02-171 - 大王叫我来巡山有java版本的 mqtt broker 么 最好是springboot开箱即用,且可开发的那种
作者回复: hivemq是Java的。 从架构看,broker和springboot之间最好有消息队列,没有太直接的关系
2020-12-091 - InfoQ_Albert经实践SSL 证书已经可用,利用mqtts发布和订阅消息成功。
作者回复: great!感谢你的留言
2020-11-2621 - 新味道https://mqtt.eclipse.org/ 打不开。
编辑回复: https://mosquitto.org/
2022-01-16 - 假行僧老师,遇到错误MOSQ_ERR_EAI代表什么意思?
作者回复: 连接服务器的错误。有更详细的信息吗?
2021-04-25