首页 > 其他分享 >MQTT

MQTT

时间:2022-10-10 15:48:21浏览次数:86  
标签:协议 订阅 TCP MQTT 消息 设备

MQTT

本资料来自互联网总结

MQTT中文网

MQTT中文手册

MQTT介绍

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

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。

MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。

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

总结:

  • 是IBM推出的一种针对移动终端设备的基于TCP/IP的发布/订阅协议
  • 可以连接大量的远程传感器和控制设备,MQTT的特点是可以保持长连接,具有一定的实时性
  • 云端向设备端发送消息,设备端可以在最短的时间内接收到并作出响应
  • MOTT更适合需要实时控制的场合,尤其适合执行器
  • 要保持长连接,那么就要时不时地发送心跳包,这就不会省电
  • 低功耗的场合并不适合MQTT
  • MQTT的长连接需要建立在TCP的基础上,TCP协议的复杂性决定了对设备的要求相比UDP更高一此

MQTT需要解决的问题

1、服务器必须要实现成千上万客户端的接入
2、单次数据数据量小,但不能出错
3、必须能够适应高延迟、偶尔断网等通信不可靠的风险
4、根据数据的重要程度和特性,设置不同等级的服务质量(session)

MQTT协议特性

使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合

  • 有三种消息发布服务质量(QoS0、QoS1、QoS2):

    • “至多一次”,消息发布完全依赖底层 TCP/IP 网络,会发生消息丢失或重复,这一级别可用于对采集数据要求不严格的情况
    • “至少一次”,确保消息到达,但消息可能会重复发生
    • “只有一次”,确保消息只到达一次,这一级别可用于要求严格如涉及计费系统的情况,消息重复或丢失都是不允许的
  • 小型传输,开销很小(固定长度的头部是2字节),协议交换最小化,以降低网络流量

  • 使用Last Wi11和Testament特性通知有关各方客户端异常中断的机制

  • 允许用户动态创建主题,零运维成本

  • 把低带宽、高延迟、不稳定的网络等因素考虑在内

  • 假设数据不可知,不强求传输数据的类型与格式,保持灵活性

MQTT协议的中心

MQTT协议的中心是MQQT服务器或代理(broker)

MQTT用途

构建传感器网络

用户可以使用MQTT构建一个传感器网络,其中各种传感器都能够以其传感器独有的消息形式发布传感器值,订阅程序能够订阅不同的消息,以据此采取措施,MQTT代理将处理从发布程序到订阅程序的转发消息。

数据处理和存储

MQTT服务器除了收集转发数据,还可以进行数据处理和存储,例如,实时存储共享单车车辆运行位置、电池用量、状态信息等数据,以及对总体的车辆数据进行计算和统筹管理,甚至为一些聊天工具护供平台服务。

MQTT主题模式

MQTT是通过主题对消息进行分类的

  • 主题本质上就是一个UTF-8的字符串
  • 主题可以通过反斜杠表示多个层级关系
  • 主题并不需要创建,直接使用就是了
  • 主题还可以通过通配符进行过滤
    • +可以过滤一个层级
    • *只能出现在主题最后,表示过滤任意级别的层级

举个例子:

building-b/floor-5:代表B楼5层的设备

+/floor-5:代表任何一个楼的5层的设备

building-b/*:代表B楼所有的设备

三个角色

MQTT中有3个角色:

  • 发布者Publisher
  • 订阅者Subscriber
  • 代理Broker

MQTT这种结构替代了传统的客户端/服务器(C/S)模型,可以实现以下解耦:

  • 空间解耦,发布者和订阅者不需要知道对方
  • 时间解耦,发布者和订阅者不需要同时运行(离线消息)
  • 同步解耦,发布和接收都是异步通讯,无需停止任何处理

标签:协议,订阅,TCP,MQTT,消息,设备
From: https://www.cnblogs.com/lidayun/p/16775929.html

相关文章

  • v1.8.3 进行中:MQTT X CLI 支持多主题订阅,优化输出显示
    九月,MQTTX团队专注于1.8.3版本的开发。主要对功能使用进行了优化,并修复了使用过程中所出现的各类问题。例如,优化MQTT5.0CleanStart的使用方式,为会话过期间隔添加默......
  • MQTT 消息持久化
    MQTT消息持久化前提条件:服务器(EMQX)&生产者都正常工作--消费者正常或者非正常掉线,一段时间过后,消费者重新上线,如何保证接收掉线时间内的离线消息?一、持久化会话当消......
  • MQTT服务端安装ubuntu
    https://blog.csdn.net/weixin_43850980/article/details/122217933MQTT安装发送订阅terminalmosquitto_pub-t"test"-m"msssss测试内容"接收订阅terminalmosquitto_......
  • 基于以太网通讯技术的MQTT物联网远程以太网IO模块
    基于以太网通讯技术的MQTT物联网远程IO模块钡铼技术远程IO模块广泛应用于智能交通、智慧水利、智慧农业、智慧校园、智慧社区、智慧配电、智慧水利等物联网场景。随着IIO......
  • MQTT协议 QoS级别
        ......
  • 智慧农业系统 - 可视化大屏(Echarts)&管理系统(HTTP(S)协议)&物联网平台(MQTT协议)
    一、平台功能特点农业数据实时监控,实时视频监控,历史数据分析;支持电子地图,设备地理位置精确定位;支持多级组织结构管理,满足集团大客户需求;可视化大屏展示,数据指标一目了然,彰显......
  • mqtt入门(四):客户端sdk
    前言该笔记学习自​​mqtt​​起步导入依赖<dependency><groupId>org.eclipse.paho</groupId><artifactId>org.eclipse.paho.client.mqttv3</artifactId><version>1.2......
  • mqtt入门(二):emqx安装
    前言该笔记学习自​​mqtt​​​​参考1​​​​参考2​​简介产品介绍rpm安装emqx​​​链接​​docker安装emqxdockerpullemqx/emqx:v4.0.5dockerrun-tid--nameemqx......
  • 工业网关如何实现MQTT、MODBUS、OPCUA、SQL、HTTP之间协议转换?
    随着工业现场总线技术以及工业物联网的蓬勃发展,不同的自动化设备往往具备多种不同的通讯协议,在实际应用中,影响了设备的数据采集与通信效率,如工业可编程控制器PLC,西门子、欧......
  • MQTT Client
    MQTTClient一、ClientLibraryMQTT官网提供不同应用场景的Client库博主选择下载C语言实现的ClientLibrary:EclipsePahoC,GigHub地址:https://github.com/eclipse/paho.......