文章 "为 Metatrader 5 开发MQTT客户端:TDD方法——第4部分"

 

新文章 为 Metatrader 5 开发MQTT客户端:TDD方法——第4部分已发布:

本文是一系列文章的第四部分,介绍了我们为 MQTT 协议开发本机 MQL5 客户端的步骤。在这一部分中,我们将描述什么是 MQTT v5.0 属性,它们的语义,以及我们如何阅读其中的一些属性,并提供一个如何使用属性来扩展协议的简短示例。

属性是MQTT v5.0中添加的“可扩展性机制”的一部分。它们在之前的v3.1.1中不存在,这是此次重大升级之前的最新版本。它们在MQTT v5.0中无处不在。但是,什么是MQTT属性?究竟是什么东西的属性呢?

答案是应用程序消息(Application Message)的属性。在OASIS标准的术语中,应用程序消息是

“MQTT协议为应用程序在网络上携带的数据。当应用程序消息由MQTT传输时,它包含有效负载数据、服务质量(QoS)、属性集合和主题名称。”(重点是我们加上的)

请看一下下面图1中表示“有效负载数据”的黄色矩形。这里有一个重要的术语区别,我们想提请您注意。

MQTT 5.0应用程序消息摘要图

图01 - MQTT 5.0应用程序消息摘要图

在消息共享协议的上下文中,当我们看到“消息”一词时,我们习惯于思考用户消息,通常是文本消息。通常情况下,我们不会将消息视为整个应用程序。 

但在这里,用户通过MQTT发送的消息是有效负载数据的一部分,属性是名为ApplicationMessage的协议抽象模型的一部分。因此,当我们通过MQTT发送用户消息时,我们不仅可以具有与“用户消息”相关的属性,而且还可以具有与整个应用程序消息相关的属性:连接的属性、发布的属性、订阅和取消订阅主题的属性、身份验证的属性等等。 <段3925>

除此之外,Will 信息还附有 Will 属性。

“遗赠信息由CONNECT有效载荷中的遗赠属性、遗赠主题和遗赠有效载荷字段组成。"

当一个人开始实现协议时,这个术语可能有点令人困惑,但我们会尽最大努力使其尽可能清晰。

作者:Jocimar Lopes