MQTT中文站
  • 首页
  • MQTT 学习
    • MQTT 入门
    • MQTT 进阶
    • MQTT 编程
    • MQTT 实例
    • MQTT 要点
    • MQTT5 要点
    • MQTT 工具
    • MQTT 客户端库
    • MQTT 服务器
    • Zigbee2MQTT
    • Sparkplug
    • Home Assistant
    • Node-RED
      • Node-RED 安装部署
      • Node-RED 用户指南
      • Node-RED 创建节点
      • Node-RED 示例教程
      • Node-RED 开发流程
      • Node-RED 接口参考
      • Node-RED 配置模板
      • Node-RED 常见问题
  • MQTT 规范
    • MQTT 5 规范
    • MQTT 3.1.1 规范
    • MQTT 3.1 规范
    • MQTT-SN v1.2规范
    • Sparkplug® v3.0.0规范
  • 产品中心
  • 解决方案
    • 环境监测
    • 工业制造
    • 智慧水利
    • 水利管网
    • 积水监测
    • 综合管廊
    • 档案库房
    • 交通物流
    • 智慧城市
    • 智慧农业
    • 智慧养殖
    • 能源电力
    • 石油石化
    • 智能家居
    • 物联网
    • 汽车与出行
  • 使用文档
  • MQTT 云平台
  • 登录
  • 注册

MQTT请求-响应模式–MQTT 5要点第9部分

2 年前 • MQTT 5

欢迎来到我们的MQTT 5要点系列的第9部分。在第8部分中,我们介绍了MQTT 5中的负载格式描述。在本文中,我们将重点介绍两个突出的元素:响应主题和关联数据。

在处理现代物联网项目的复杂性时,需要跨不同供应商和团队进行协作。随着MQTT成为物联网的卓越协议,增强的互操作性和系统透明性成为MQTT版本5蓝图中的主要需求。今天我们要深入探讨的特性通过提供一种标准解决方案,用于使用MQTT实现请求-响应模式,以满足用户的需求。

什么是MQTT中的请求-响应模式?
MQTT根植于异步消息传递,采用发布-订阅范式。这个设计允许发送方和接收方独立运行,促进了一对多的关系。重要的是要理解,MQTT的请求-响应模式与同步的、基于一对一的协议(例如HTTP)从根本上不同。

在MQTT中,响应通常不会直接回答请求的“问题”。相反,请求会在接收方触发特定操作,而响应则会传达这个操作的结果。

听起来复杂吗?不要担心,一个具体的示例很快会让这一切变得清晰!

什么是MQTT 5中的响应主题?
响应主题是一个可选的UTF-8字符串,包含在任何PUBLISH或CONNECT数据包中。如果响应主题中存在值,发送方将立即将相关的PUBLISH标记为请求。响应主题字段指示了消息接收者预期的响应主题。最初的PUBLISH(请求)和响应主题可以有多个或没有订阅者。理想情况下,原始的PUBLISH(请求)发送方应在发送请求之前订阅响应主题。

什么是MQTT 5中的关联数据?
关联数据是后续的响应主题之后的可选二进制数据。它帮助请求的发送方识别后来接收到的响应与哪个特定的请求相关。关联数据允许原始请求发送方管理从多个接收者可能发送的异步响应。重要的是要注意,这些数据与MQTT代理无关,但用于标识发送方和接收方之间的关系。

MQTT 5中的响应信息是什么?
为了促进透明的实现和改进标准化,MQTT 5规范引入了响应信息属性。通过CONNECT中的一个布尔字段,客户端可以请求代理发送响应信息。当设置为true时,代理可以在CONNACK数据包中发送一个可选的UTF-8字符串字段(响应信息),以传达预期的响应主题。

这个特性允许用户在代理上全局定义主题树的特定部分,所有表示他们打算在连接建立时使用请求-响应模式的客户端都可以访问这个部分。

MQTT 5中的端到端确认
MQTT确保消息发送方和接收方完全解耦。在许多情况下,用例需要从预期的接收方那里获得消息接收的确认。例如,当通过命令打开智能家居的门时,发送方(通常是移动应用程序)希望知道消息何时接收以及命令的结果。

请求-响应模式在智能门上的示例
例如,使用MQTT 5请求-响应功能,通过移动设备打开智能门的示例。

MQTT请求-响应模式–MQTT 5要点第9部分-MQTT中文站

MQTT 5规范中包含请求-响应模式,主要是为了满足这些“业务确认”的需求。MQTT用户寻求在应用消息的发送方和接收方之间提供端到端确认的能力。通过直接将响应主题、关联数据和响应信息集成到协议字段中,我们显著增强了使用请求-响应模式进行应用程序开发的灵活性、动态性和透明性。

MQTT请求-响应工作流的源代码示例
以下是展示HiveMQ MQTT客户端能力的快速代码片段,提供了MQTT中请求-响应模式工作流的味道。请注意,这不是一个完整的、可运行的示例。

您可以在GitHub上访问完整示例,并在我们的HiveMQ社区论坛中咨询任何实施问题。

// 请求方订阅响应主题
Mqtt5SubAck subAck = requester.subscribeWith()
        .topicFilter("job/client1234/result")
        .send();

// 请求方发布请求
Mqtt5PublishResult result = requester.publishWith()
       .topic("job")
       .correlationData("1234".getBytes())
       .responseTopic("job/client1234/result")
       .payload(message.getBytes())
       .send();

// 响应方订阅请求主题
Mqtt5SubAck subAck = responder.subscribeWith()
        .topicFilter("job")
        .send();

// 响应方在接收请求后发送响应
Mqtt5PublishResult result = responder.publishWith()
         .topic(publish.getResponseTopic().get())
         .payload(msg.getBytes())
         .correlationData(publish.getCorrelationData().get())
         .send();

MQTT请求-响应中的关键要点
以下是MQTT请求-响应的一些关键要点:

  • MQTT中的请求-响应模式与同步的、基于客户端-服务器的协议(如HTTP)显著不同。
  • MQTT允许请求和响应的订阅者为多个、单个或甚至没有。
  • 关联数据确保请求和响应之间的正确关联,提高消息跟踪的能力。
  • 这种模式促进了“业务确认”功能的实现,提供了一种可扩展、动态和透明的解决方案。

在使用MQTT的请求-响应时要考虑的最佳实践
在使用MQTT的请求-响应时,以下是一些最佳实践:

  • 确保请求方在发送请求之前订阅相关的响应主题。
  • 在响应主题中使用唯一的标识符以避免混淆。
  • 确保响应方和请求方具有发布和订阅响应主题的必要权限。
  • 为响应目的专门分配主题树的一个特定部分,并利用响应信息字段将其传递给客户端。

结论
当我们探讨MQTT v5的变革性特性时,我们发现了协议演进的力量。这些增强功能,如请求-响应模式,不仅简化了现有的实践,还开启了应用程序开发中新的动态、透明和可扩展的领域。在第10部分中,我们将讨论主题别名的话题。

打赏赞(1)微海报分享
mqtt

MQTT:解锁互联汽车服务的强大引擎

MQTT 主题别名 – MQTT 5要点第10部分

猜你喜欢

改善基础设施:HiveMQ如何推动智能城市发展

改善基础设施:HiveMQ如何推动智能城市发展

08/07
2024
为什么企业选择全托管HiveMQ云进行MQTT部署

为什么企业选择全托管HiveMQ云进行MQTT部署

07/01
2024
MQTT 赋能工业 PLC 数据采集与应用

MQTT 赋能工业 PLC 数据采集与应用

06/30
2024
  • 解决方案
    • 智能家居
    • 汽车与出行
    • 工业制造
    • 能源电力
    • 石油石化
    • 交通物流
    • 零售
  • 学习
    • MQTT 规范
    • MQTT 教程
    • MQTT 软件
    • MQTT 客户端库
    • MQTT 服务器
    • 工具和应用程序
  • 关于我们
    • 了解创科慧仁
    • 加入创科慧仁
    • 投资者关系
    • 新闻动态
    • 合作伙伴
    • 联系我们
  • 友情链接
    • Modbus中文网
    • 跳动符号官网
    • 物联网世界
    • RFID世界网
    • 深圳物联网协会
    • isoftstone软通动力
    • 中国发展战略学研究会
    • B.P商业伙伴
  • 在线客服
  • 全国客户服务热线
    4006909885
  • 官方公众号
  • 联系邮箱
    contact@mqtt.cn
Copyright © 2025 MQTT中文站. All rights reserved.Designed by nicetheme. 京ICP备20029519号
在线客服

微信咨询

微信咨询

4006909885

服务热线 7*24小时

电话咨询
  • 首页
  • MQTT 学习
    • MQTT 入门
    • MQTT 进阶
    • MQTT 编程
    • MQTT 实例
    • MQTT 要点
    • MQTT5 要点
    • MQTT 工具
    • MQTT 客户端库
    • MQTT 服务器
    • Zigbee2MQTT
    • Sparkplug
    • Home Assistant
    • Node-RED
  • MQTT 规范
    • MQTT 5 规范
    • MQTT 3.1.1 规范
    • MQTT 3.1 规范
    • MQTT-SN v1.2规范
    • Sparkplug® v3.0.0规范
  • 产品中心
  • 解决方案
    • 环境监测
    • 工业制造
    • 智慧水利
    • 水利管网
    • 积水监测
    • 综合管廊
    • 档案库房
    • 交通物流
    • 智慧城市
    • 智慧农业
    • 智慧养殖
    • 能源电力
    • 石油石化
    • 智能家居
    • 物联网
    • 汽车与出行
  • 使用文档
  • MQTT 云平台
  • 登录
  • 注册
 

正在加载评论...
 

您必须登录才能发表评论。

    string(5) "2.0.0"