MQTT 消息代理和客户端软件指南

导航至

MQTT 是一种机器对机器的通信协议。设备将消息发布到代理的特定主题下,其他设备订阅这些主题以接收信息。它之所以受欢迎是因为它不占用大量带宽,因此网络连接有限的物联网设备可以使用它。MQTT 的工作原理归功于代理。每个发送和接收数据的设备都可以与潜在的数百万其他设备通信,而只需连接到一个代理。开发人员可以从几种不同的代理中进行选择,一些是开源的,一些是商业的。设备需要运行客户端软件才能连接到代理。这篇文章概述了一些最流行的代理和客户端软件。

MQTT 代理连接到客户端设备,验证连接并临时存储数据。由于每个设备仅连接到代理,因此随着项目规模的扩大,很容易将新设备添加到架构中。即使每个设备只有有限的带宽,也可以访问来自无数其他设备的复杂数据,这使得 MQTT 成为许多物联网应用的理想协议。MQTT 代理可以是托管的,这意味着您无需在服务器上安装任何东西,也可以是自托管的,在这种情况下,您需要在自己的服务器上设置代理,并根据应用程序的需要管理安全性和扩展。代理示例列在下面

  • Mosquitto 是最流行的 MQTT 代理之一。Eclipse 基金会以及流行的 Paho MQTT 客户端库 为其提供支持。Celado,Eclipse 基金会背后的公司,还提供 Pro Mosquitto 选项,其中包括托管和高可用性。

  • EMQX 是另一个开源 MQTT 代理,是云原生的,并且是第一个支持 MQTT 版本 5 的代理。创建它的公司 EMQ 声称,EMQX 代理集群可以处理 1 亿个订阅者。除了代理之外,EMQ 还创建了开源 MQTT 工具 NanoMQ 和 Neuron,用于将物联网设备连接到云。

  • HiveMQ 是另一个代理选项。该公司既有开源代理,也有托管代理,后者特别适合扩展应用程序,并与 InfluxDB 顺利集成。

  • AWS IoT Core 是一种流行的商业托管代理。它也非常适合扩展,并且对于已经使用 AWS 的开发人员来说很方便。

  • Azure IoT Hub 是另一个适合使用 Azure 的开发人员的托管选项。

将消息发布到代理或订阅主题的设备称为客户端。为此,它们需要运行客户端软件,该软件使用登录信息连接到代理。一种流行的开源客户端工具是 MQTT X,它由 EMQ 支持。它适用于 MacOS、Windows 和 Linux 操作系统,并使用聊天框界面发送和接收消息。许多拥有 MQTT 代理的公司和组织也拥有客户端软件。Mosquitto 具有开源命令行界面以及 C 和 C++ 客户端库。HiveMQ MQTT 客户端 是基于 Java 的,并且同时支持 MQTT 版本 5 和版本 3.1.1。在 GitHub 上还有更多开源 MQTT 工具和客户端库可用。

InfluxDB 如何融入

物联网传感器收集时间序列数据。有大量的时间序列数据,为了构建自动化,开发人员需要能够实时分析它。InfluxDB 高效地存储和查询这些数据,并以几种不同的方式融入 MQTT 数据管道

您还可以使用 MQTT Producer Telegraf Output Plugin 在 InfluxDB 中分析和查询数据后,将数据发送回代理。此步骤非常强大,并为物联网设备提供了复杂自动化所需的转换数据。开发人员将 MQTT 用于许多需要机器对机器通信的应用程序,从智能家居设备到 工业制造,选择使用哪个代理和客户端软件是启动并运行您的项目的第一步。