MQTT协议是一种广泛用于物联网的机器对机器(M2M)协议。 它是基于消息的协议。 它非常轻巧,因此在物联网生态系统中被采用。 几乎所有的物联网云平台都支持MQTT协议,以从智能对象发送和接收数据。 对于不同的物联网板,例如Arduino,Raspberry等,有多种实现。

还有其他用于执行IoT项目的IoT协议,但MQTT是效率最高的协议之一。

MQTT协议概述

MQTT是在1999年左右开发的。该协议的主要目标是从带宽的角度创建一种非常有效的协议。 而且,这是非常省电的协议。 由于所有这些原因,它适用于物联网。

与基于请求/响应范例的HTTP相比,此协议使用了发布-订阅范例。 它使用二进制消息以低开销交换信息。 它非常容易实现并且是开放的。 所有这些方面有助于其在物联网中的广泛采用。 另一个有趣的方面是MQTT使用TCP堆栈作为传输基板。

MQTT消息模式

如前所述,MQTT协议实现了发布-订阅者范例。 此范例将发布消息的客户端(“发布者”)与接收消息的其他客户端(“订户”)分离。 而且,MQTT是异步协议,这意味着它在等待消息时不会阻塞客户端。 与HTTP协议相反,它主要是同步协议。 MQTT协议的另一个有趣的特性是,它不需要客户端(“订户”)和发布者同时连接。

MQTT发布者-订阅者模式

如上所述,MQTT是使用发布者-订阅者模式的基于消息的协议。 MQTT中的关键组件是MQTT代理。 MQTT代理的主要任务是向客户端(“订户”)发送消息。 换句话说,它接收来自发布者的消息并将这些消息分发给订阅者。 在调度消息时,MQTT代理使用该主题过滤将接收消息的客户端。 主题是一个字符串,可以组合主题以创建主题级别。

主题就像将发布者连接到其订阅者的虚拟渠道。 本主题由MQTT代理管理。 通过此虚拟通道,发布者与订阅者分离,客户端(发布者或订阅者)不必彼此了解。 这使得该协议具有高度可伸缩性,而无需消息产生者(“发布者”)和消息使用者(“订户”)直接依赖。

下面的模式描述了MQTT体系结构:
Android mqtt 从手机文件中选择一个进行发送 mqtt传输图片方法_物联网

如何使用MQTT协议

现在,我们对MQTT有了一个概述,是时候了解如何使用真实示例了。 MQTT有多种实现,在此示例中,我们将使用由Eclipse开发的Mosquitto 。 第一步是安装MQTT代理。 我们将其安装在Raspberry PI上。 要安装Mosquitto,我们必须添加保存应用程序的存储库,以便我们可以下载它。 在添加存储库之前,必须添加密钥以验证下载程序包有效。 让我们使用ssh或远程桌面连接连接到Raspberry PI。 现在在终端中,我们必须编写:

wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key

Android mqtt 从手机文件中选择一个进行发送 mqtt传输图片方法_物联网_02

现在,是时候导入密钥了:

sudo apt-key add mosquitto-repo.gpg.key

最后,让我们添加fil .list

sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list

Android mqtt 从手机文件中选择一个进行发送 mqtt传输图片方法_物联网_03

现在,已经正确配置了存储库链接,我们可以在Raspberry PI上安装Mosquitto。

apt-get install mosquitto

MQTT服务器安装在Raspberry PI上。 该服务器是我们上面指定的MQTT代理。 现在我们需要安装客户端,即安装发布者和订阅者。 在此示例中,我们将客户端和服务器安装在同一Raspberry上,但您可以将其安装在不同的PC /服务器或IoT板上。

apt-get install mosquitto-clients

如何发送MQTT消息

我们已经安装并配置了客户端和服务器,现在我们可以注册特定主题的订户并等待发布者的传入消息。 要注册订户,我们将使用以下命令:

Android mqtt 从手机文件中选择一个进行发送 mqtt传输图片方法_java_04

如您所见,我们的订户正在等待消息。 在此示例中,我们使用了一个名为swa_news的主题。 现在,我们将使用使用相同主题swa_news的MQTT发布者发送一条消息。

Android mqtt 从手机文件中选择一个进行发送 mqtt传输图片方法_linux_05

在该示例中,MQTT发布者发送“ Hello Protocol”消息。 在订户端,我们收到消息:

Android mqtt 从手机文件中选择一个进行发送 mqtt传输图片方法_linux_06

如何在Android智能手机上使用MQTT

在最后一个示例中,我们将使用Android MQTT客户端,以便Android MQTT客户端收到与我们发送的消息相同的消息。 该视频显示了如何配置Android MQTT客户端。

在本文的结尾,您希望知道什么是MQTT协议以及如何发布消息。

翻译自: https://www.javacodegeeks.com/2016/10/mqtt-protocol-tutorial.html