协议入门:基础知识和快速教程腾讯云开发者社区

本文是 MQTT 协议的入门指南,提供了实用的代码示例。物联网和 MQTT 的初学者可以通过本文掌握 MQTT 的基本概念,快速开启 MQTT 服务和应用的开发。

MQTT(Message Queuing Telemetry Transport)是一种轻量级、基于发布-订阅模式的消息传输协议,适用于资源受限的设备和低带宽、高延迟或不稳定的网络环境。它在物联网应用中广受欢迎,能够实现传感器、执行器和其它设备之间的高效通信。

MQTT 所具有的适用于物联网特定需求的特点和功能,使其成为物联网领域最佳的协议之一。它的主要特点包括:

要了解 MQTT 的工作原理,首先需要掌握以下几个概念:MQTT 客户端、MQTT Broker、发布-订阅模式、主题、QoS。

MQTT 客户端

任何运行 MQTT 客户端库的应用或设备都是 MQTT 客户端。例如,使用 MQTT 的即时通讯应用是客户端,使用 MQTT 上报数据的各种传感器是客户端,各种 MQTT 测试工具也是客户端。

MQTT Broker

MQTT Broker 是负责处理客户端请求的关键组件,包括建立连接、断开连接、订阅和取消订阅等操作,同时还负责消息的转发。一个高效强大的 MQTT Broker 能够轻松应对海量连接和百万级消息吞吐量,从而帮助物联网服务提供商专注于业务发展,快速构建可靠的 MQTT 应用。

发布-订阅模式

发布-订阅模式与客户端-服务器模式的不同之处在于,它将发送消息的客户端(发布者)和接收消息的客户端(订阅者)进行了解耦。发布者和订阅者之间无需建立直接连接,而是通过 MQTT Broker 来负责消息的路由和分发。

下图展示了 MQTT 发布/订阅过程。温度传感器作为客户端连接到 MQTT Broker,并通过发布操作将温度数据发布到一个特定主题(例如 Temperature)。MQTT Broker 接收到该消息后会负责将其转发给订阅了相应主题(Temperature)的订阅者客户端。

主题

MQTT 协议根据主题来转发消息。主题通过 / 来区分层级,类似于 URL 路径,例如:

MQTT 主题支持以下两种通配符:+ 和 #。

注意:通配符主题只能用于订阅,不能用于发布。

QoS

MQTT 提供了三种服务质量(QoS),在不同网络环境下保证消息的可靠性。

在了解了 MQTT 的基本组件之后,让我们来看看它的一般工作流程:

下面我们将通过一些简单的示例来展示如何使用 MQTT。在开始之前,需要准备 MQTT Broker 和 MQTT 客户端。

您可以选择私有部署或完全托管的云服务来建立自己的 MQTT Broker。或者您也可以使用免费的公共 Broker。

EMQX 是最具扩展性的开源 MQTT Broker,适用于物联网、工业物联网和车联网。您可以运行以下 Docker 命令来安装 EMQX。

通过全托管的云服务启动 MQTT 服务是最便捷的方式。如下图所示,EMQX Cloud 可以在几分钟内启动,并在 AWS、Google Cloud 和 Microsoft Azure 的 17 个区域提供运行支持。

在本文中,我们将使用 EMQ 提供的免费公共 MQTT Broker,它基于完全托管的 MQTT 云服务 - EMQX Cloud 创建。服务器信息如下:

MQTTX 是一款跨平台的 MQTT 5.0 桌面客户端,可在 macOS、Linux、Windows 操作系统上运行。其用户友好的聊天式界面使用户能够轻松创建多个 MQTT/MQTTS 连接,并进行 MQTT 消息的订阅和发布。

在使用 MQTT 协议进行通信之前,客户端需要创建一个 MQTT 连接来连接到 Broker。

我们在 Name 中输入 Simple Demo,然后点击右上角的 Connect 按钮,建立一个 MQTT 连接。如下图所示,表示连接成功。

接下来,我们在上面创建的 Simple Demo 连接中通过通配符订阅主题 sensor/+/temperature,这样就可以接收所有传感器发送的温度数据了。

如下图所示,点击 New Subscription 按钮,在弹出框中的 Topic 字段中输入主题 sensor/+/temperature,QoS 保持默认值 0。

订阅成功后,会在订阅列表的中间看到新增了一条记录。

接下来,我们点击左侧菜单上的 + 按钮创建两个连接,分别命名为 Sensor 1 和 Sensor 2,用来模拟两个温度传感器。

连接创建成功后,会看到三个连接,每个连接左侧的在线状态指示灯都是绿色的。

选择 Sensor 1 连接,在页面下方的发布主题中输入 sensor/1/temperature,在消息框中输入以下 JSON 格式的消息,然后点击右下方的发布按钮发送消息。

如下图所示,消息发送成功。

使用相同的步骤,在 Sensor 2 连接中发布以下 JSON 消息到 sensor/2/temperature 主题。

您会看到 Simple Demo 连接收到两条新消息。

点击 Simple Demo 连接,会看到两个传感器发送的两条消息。

当 MQTT 客户端向服务器发布消息时,可以设置保留消息标志。保留消息存储在消息服务器上,后续订阅该主题的客户端仍然可以收到该消息。

如下图所示,我们在 Sensor 1 连接中勾选 Retain 选项,然后向 retained_message 主题发送两条消息。

接着,我们在 Simple Demo 连接中订阅 retained_message 主题。订阅成功后,会收到 Sensor 1 发送的第二条保留消息,这说明服务器只会为主题保留最近的一条保留消息。

MQTT 客户端通常只能在在线状态下接收其它客户端发布的消息。如果客户端离线后重新上线,它将无法收到离线期间的消息。

但是,如果客户端连接时设置 Clean Session 为 false,并且使用相同的客户端 ID 再次上线,那么消息服务器将为客户端缓存一定数量的离线消息,并在它重新上线时发送给它。

本次演示使用的公共 MQTT 服务器设置为缓存 5 分钟的离线消息,最大消息数为 1000 条,且不保存 QoS 0 消息。

下面,我们创建一个 MQTT 3.1.1 连接,并用 QoS 1 来演示 Clean Session 的使用。

MQTT 5.0 中将 Clean Session 拆分成了 Clean Start 与 Session Expiry Interval。

创建一个名为 MQTT V3 的连接,设置 Clean Session 为 false,选择 MQTT 版本为 3.1.1。

连接成功后,订阅 clean_session_false 主题,并将 QoS 设置为 1。

订阅成功后,点击右上角的断开按钮,断开连接。

然后,创建一个名为 MQTT_V3_Publish 的连接,MQTT 版本也设置为 3.1.1。连接成功后,向 clean_session_false 主题发布三条消息。

接着,选择 MQTT_V3 连接,点击连接按钮重新连接到服务器,会收到三条离线消息。

MQTT 客户端在向服务器发起 CONNECT 请求时,可以选择是否发送遗嘱消息标志,并指定遗嘱消息的主题和有效载荷。

如果 MQTT 客户端异常离线(在断开连接前没有向服务器发送 DISCONNECT 消息),MQTT 服务器会发布遗嘱消息。

我们创建一个名为 Last Will 的连接来演示这个功能。

连接成功后,我们断开电脑网络超过 5 秒(模拟客户端异常断开连接),然后再恢复网络。

接着启动 Simple Demo 连接,并订阅 last_will 主题。您会收到 Last Will 连接设置的遗嘱消息。

本文详细介绍了 MQTT 的基本概念和使用流程,您可以按照本文所学的内容尝试使用 MQTT 协议。

THE END
0.10分钟入门计算机基础(非常详细)零基础入门到精通,收藏这一篇就够了计算机(Computer):俗称电脑,是一种能接收和存储信息,并按照存储在其 内部的程序对海量数据进行自动、高速地处理,然后把处理结果输出的现代化 智能电子设备 发展历史: 第一代计算机(1946-1957) 电子管时代 第二代计算机(1958-1964) 晶体管时代 第三代计算机(1965-1970) 集成电路时代 jvzquC41dnuh0lxfp0tfv8Ocxciiklmk1cxuklqg1fkucrqu13::5>:8;5
1.windows安装教程入门基本知识有哪些对于之前很少接触电脑的人来说,一些关于电脑知识学习入门的基础知识是他们最想学到手的,可是又不知该针对哪方面进行学习,下面就让小编带你去看看windows安装教程入门基本知识,希望能帮助到大家! Windows自带虚拟机安装教程。 Hyper-V限定专业版才能使用,家庭版是不能直接开启此功能的,可以以代码命令的方式调出来,同时要jvzquC41yy}/z~jzkng/exr1kv5yk}tpiyoo98h:48<937mvon
2.电脑高手必懂75个知识(最基本的电脑知识)零基础入门到精通,收藏这本篇文章给大家谈谈电脑高手必懂75个知识,以及最基本的电脑知识对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、电脑硬件的基本常识有哪些? 2、实用电脑技巧大全 3、使用电脑必须掌握的基本知识? 4、要成为一名电脑高手 必须了解和掌握的知识 jvzq<84yyy4489iqe0ipo8hqpvkov8761381386417=38>89a3752A;;54?/uqyon
3.10分钟入门计算机基础(非常详细)零基础入门到精通,收藏这一篇就够了计算机(Computer):俗称电脑,是一种能接收和存储信息,并按照存储在其 内部的程序对海量数据进行自动、高速地处理,然后把处理结果输出的现代化 智能电子设备 知识库由360智榜样学习中心独家打造出品,旨在帮助网络安全从业者或兴趣爱好者零基础快速入门提升实战能力,熟练掌握基础攻防到深度对抗。 jvzquC41dnuh0lxfp0tfv87523e8;=:73;60c{ykenk0fnyckny03>8426812
4.《文员办公初级者计算机应用电脑基础入门知识书籍基础教材书从零当当北京鼎美文化图书专营店在线销售正版《文员办公初级者计算机应用电脑基础入门知识书籍基础教材书从零开始新手学电脑从入门到精通教程一本通学习资料入门完全自学手册 9787520815253》。最新《文员办公初级者计算机应用电脑基础入门知识书籍基础教材书从零开始新手学电脑jvzq<84rtqjve}3fcpmecwl0eqs03::368::4><0jvsm
5.计算机办公软基础知识书籍自学全套零基础新手学电脑入门教程《新手学电脑 从零开始初学电脑 计算机办公软基础知识书籍自学全套 零基础新手学电脑入门教程 文员电脑应用基础拼音五笔打字速成件》,作者:新手学电脑 从零开始初学电脑 计算机办公软基础知识书籍自学全套 零基础新手学电脑入门教程 文员电脑应用基础拼音五笔打字速成件赵jvzq<84rtqjve}3o0fgoimfpi0ipo863;4<15B<640nuou
6.电脑入门自学教程ontheAppStore《电脑入门自学教程》从最基础的电脑知识讲起,基础硬件,主机构成等,为电脑初学者以及相关行业从事人员提供了一个学习电脑知识的平台。可以增加学习者对电脑内容的了解,为自己的工作、生活助力。 基本介绍 计算机基础知识大全在办公文档的相关文库文档资源中很热门哦,下面为大家展示计算机基础知识大全的部分内容,更多具体内jvzquC41crvt0jurng4dqv4wu1gqr8nf33762<5;:4
7.电脑基础入门书排行榜京东JD.COM为您提供电脑基础入门书销量排行榜、电脑基础入门书哪个好、电脑基础入门书多少钱等相关资讯,从电脑基础入门书价格、评价、图片等多方面比较,为您推荐优质电脑基础入门书产品!jvzquC41yy}/lm3eqo5qjk4mg{e29:83f4627;6e;:;2;ji0jvsm
8.《文员办公初级者计算机应用电脑基础入门知识书籍资料入门完全自学文员办公初级者计算机应用电脑基础入门知识书籍资料入门完全自学零基础自学教程新手入门从入门到精通实战案例办公自动化操作技能培训教材职场必备高效工作手册电脑操作速成班 新手学电脑从入门到精通 无规格 收藏 ¥ 累计评价 0 降价通知 - + 加入购物车 jvzquC41kvkn0si0eqs03969528:4:=;994ivvq
9.财务知识入门教程20251111.pptx财务知识入门教程演讲人:日期:06个人财务管理目录01财务基础概念02财务报表解析03预算管理方法04投资基础知识05税务入门指南01财务基础概念资产与负债定义资产的核心特征资产是企业拥有或控制的、由过去交易形成的经济资源,必须具备直接或间接带来现金流入的能力,例如存货通过销售转化为应收账款,最终形成现金回流。非经营性jvzquC41yy}/tnstgpjpe7hqo1vbrnw16;655A>6;0nuou
10.电脑基础教程书籍价格电脑基础教程书籍图片京东JD.COM是国内专业的网上购物商城,为您提供电脑基础教程书籍、电脑基础教程书籍价格、电脑基础教程书籍图片等相关信息.jvzquC41uq4n0si0eqs0eqfprkt04><;698/j}rn
11.计算机基础知识快速入门教程.docx计算机基础知识快速入门教程在数字化浪潮席卷的今天,计算机基础能力早已超越“会打字上网”的范畴——它是理解软件运行逻辑、排查系统故障、甚至开启编程之路的关键基石。本教程将从系统组成、操作逻辑、网络安全到工具实践,用最精炼的逻辑串联核心知识,帮你快速建立计算机认知体系,告别“只会用却不懂原理”的困境。一、jvzquC41yy}/tnstgpjpe7hqo1vbrnw16;768;9360nuou