MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)协议

系列文章目录

使用libmosquitto进行MQTT协议应用开发案例



前言

提示:案例演示及代码讲解请翻阅上面的系列文章

本文主要介绍 MQTT 相关概念以及 MQTT Broker 服务器的搭建步骤。


一、MQTT 通信协议简介

1.1 MQTT 是什么

MQTT 协议全称为消息队列遥测传输(Message Queuing Telemetry Transport)协议,该协议构建于 TCP/IP 协议之上,是一种基于发布/订阅(Publish/Subscribe)模式的“轻量级”通讯协议。MQTT协议最初是由IBM在1999年发布的,并已成为ISO标准(ISO/IEC PRF 20922)。

MQTT拓扑概念图

1.2 MQTT 的通信模式

在 MQTT 通信过程中有三种身份,分别是发布者(Publisher)、代理(Broker)、和订阅者(Subscriber),而MQTT传输的消息分为主题(topic)和负载(payload)两部分。
MQTT通信模式

1.3 MQTT 的特点

MQTT 是轻量、简单、开放和易于实现的,同时作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。MQTT 最大优点在于可以以极少的代码量和有限的带宽,为连接远程设备提供实时可靠的消息服务。

特点 描述
轻量可靠 MQTT 的报文格式精简、紧凑,可在严重受限的硬件设备和低带宽、高延迟的网络上实现稳定传输。
通讯解耦 发布/订阅的模式实现了发布者与订阅者的解耦,即发布者与订阅者无需直接建立连接,亦无需同时在线,实现了异步通讯。
为物联网而生 提供心跳机制、遗嘱消息、QoS 质量等级 + 离线消息、主题和安全管理等全面的物联网应用特性。
完善的生态 覆盖范围广,已成为众多云厂商物联网平台的标准通信协议。

1.4 MQTT 的应用场景

MQTT 作为一种低开销,低带宽占用的即时通讯协议,可以极少的代码和带宽为联网设备提供实时可靠的消息服务,适用于硬件资源有限的设备及带宽有限的网络环境。

常见的应用场景如下:

(1) 物联网 M2M 通信,物联网大数据采集。
(2) 移动即时消息及消息推送。
(3) 智能硬件、智能家居、智能电器。
(4) 车联网通信,电动车站桩采集。
(5) 智慧城市、远程医疗、远程教育。
(6) 电力能源、石油能源。

二、MQTT Broker(消息代理服务器)搭建

MQTT 的代理服务器有很多,常见的比如有 Mosquitto、EMQX以及各种 MQTT 服务器代理平台,本文只介绍 Mosquitto 和 EMQX。

2.1 Mosquitto简述

Mosquitto 是一个开源的 MQTT 消息代理(服务器)软件,‌由 MQTT 协议创始人之一的 Andy Stanford-Clark 开发。它提供轻量级的、‌支持可发布/可订阅的消息推送模式,‌使得设备对设备之间的短消息通信变得简单。‌

Mosquitto 的开源性质意味着它可以被广泛地应用于各种项目,‌并且由于其轻量级和高效率的特性,‌它成为了许多物联网项目和应用的理想选择。‌此外,‌由于其开源特性,‌开发者可以根据自己的需求对 Mosquitto 进行定制和扩展,‌以满足特定的应用需求。‌

也就是说,Mosquitto 这个软件已经把 MQTT 协议封装好了,我们只需要简单地调用它提供的接口就能使用 MQTT 进行通信了。另一方面我们还可以使用它来作为MQTT 服务器使用

2.2 Mosquitto安装部署

在嵌入式系统上使用 Mosquitto 建议直接源码安装,最新的源码可从这里下载mosquitto源码下载地址,而在ubuntu上我们可以直接使用包管理器apt下载安装作为调试使用,以下是在ubuntu上安装mosquitto的步骤:

1. 安装mosquitto服务器

sudo apt-get install mosquitto

该命令只会安装mosquitto服务器,并不包含客户端工具。

2. 安装mosquitto客户端工具

sudo apt-get install mosquitto_clients

该指令会安装mosquitto的命令行客户端工具,主要是mosquitto_pub和mosquitto_sub。这两个工具分别用于发布和订阅MQTT消息。如果你已经安装了mosquitto服务器并希望使用命令行工具来测试或管理MQTT消息,那么你需要安装这个包。

3. 安装mosquitto头文件

sudo apt-get install libmosquitto-dev

4.启动或重启mosquitto服务器

sudo systemctl start mosquitto 或者 sudo systemctl res
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值