开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 7320|回复: 10
收起左侧

[技术专题] 物联网流行协yi——MQTT

[复制链接]
结帖率:81% (26/32)
发表于 2019-1-22 10:28:44 | 显示全部楼层 |阅读模式   广东省惠州市

2017年最热门的技术莫过于:人工智能,区块链和物联网。笔者今天就花三分钟给大家介绍一个物联网中非常的基础一个常用的流行协议,MQTT。
122004932_1_20180116054017939.jpg
MQTT (Message Queue Telemetry Transport),翻译成中文就是,遥测传输协议,其主要提供了订阅/发布两种消息模式,更为简约、轻量,易于使用,特别适合于受限环境(带宽低、网络延迟高、网络通信不稳定)的消息分发,属于物联网(Internet of Thing)的一个标准传输协议。
为什么使用MQTT 协议?
MQTT(英语全称,Message Queue Telemetry Transport),中文翻译过来就是遥测传输协议:其主要提供订阅/发布模式,更为简约、轻量,易于使用,针对受限环境(带宽低、网络延迟高、网络通信不稳定),属于物联网(Internet of Thing)的一个传输协议。设计思想是开放、简单、轻量、易于实现。这些特点使它适用于受限环境。例如,但不仅限于此:
  • 特别适合于网络代价昂贵,带宽低、不可靠的环境。
  • 能在处理器和内存资源有限的嵌入式设备中运行。
  • 使用发布/订阅消息模式,提供一对多的消息发布,从而解除应用程序耦合。
  • 使用 TCP/IP 提供网络连接。
  • 提供Last Will 和 Testament 特性通知有关各方客户端异常中断的机制。

对消息中间件,估计大家不得不关心的就是消息的可靠性,也就是消息的发布服务质量,可喜的是,MQTT支持三种消息发布服务质量(QoS):
  • “至多一次”(QoS==0),消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
  • “至少一次”(QoS==1),确保消息到达,但消息重复可能会发生。
  • “只有一次”(QoS==2),确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量。

协议规范的版本
MQTT的协议最新的三个版本是:3.1.1,3.1.0和5.0的协议。
  • 3.1.0的规范如下
    http://public.dhe.ibm.com/software/dw/webservices/ws-mqtt/mqtt-v3r1.html
  • 3.1.1的规范如下
    http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718029
  • 5.0 的规范如下
    http://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.html

其中5.0还只是一个提案(2017年7月13日发布的一个草稿版的提案),所以本篇文章暂时不涉及MQTT 5.0的协议,考虑到目前主流和成熟的MQTT协议的应用都是MQTT 3.1.1的协议,所以笔者还是以MQTT 3.1.1的协议为基准,给大家分享,只要这个会了,其他的自然不在话下。需要注意的是,MQTT 3.1.0和3.1.1 规范,还是有小部分的区别的。比如可变头部中,在3.1.0的规范中,其关键字是,“MQISdP”。
支持MQTT协议消息中间件产品?
目前有很多的MQTT消息中间件服务器,如下,都是MQTT协议的服务器端的实现。
  • IBM Websphere
  • MQ Telemetry
  • IBM MessageSight
  • Mosquitto
  • Eclipse Paho
  • emqttd Xively
  • m2m.io
  • webMethods
  • Nirvana Messaging
  • RabbitMQ
  • Apache ActiveMQ
  • Apache Apollo
  • Moquette
  • HiveMQ
  • Mosca
  • Litmus Automation Loop
  • JoramMQ
  • ThingMQ
  • VerneMQ

支持一对多的消息订阅
MQTT协议,支持一对多的基于消息主题(Topic)的消息订阅,也就是一个MQTT的客户端,发送一条特定主题的消息,
能同时支持多个订阅者同时订阅。
如下图所示意,笔记本和手机都订阅了消息主题为temperature的消息,当温度传感器发布了temperature的消息(当前温度为21 C), 笔记本和手机都会受到温度传感器发布的温度。

MQTT客户端的语言支持
目前市面上的主流语言都支持。
  • Java
  • Javascript
  • C/C++
  • Python
  • Ruby
  • Objective-C




本帖被以下淘专辑推荐:

发表于 2024-2-28 16:25:32 | 显示全部楼层   黑龙江省哈尔滨市
谢谢科普!
回复 支持 反对

使用道具 举报

结帖率:32% (6/19)

签到天数: 28 天

发表于 2024-2-27 09:21:17 | 显示全部楼层   贵州省黔东南苗族侗族自治州
好东西。厉害厉害
回复 支持 反对

使用道具 举报

发表于 2023-12-17 18:29:45 | 显示全部楼层   重庆市重庆市
原以为是有可学习的模块或源码呢
回复 支持 反对

使用道具 举报

发表于 2022-11-2 07:01:36 | 显示全部楼层   江苏省南通市
原以为是有可学习的模块或源码呢
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 14 天

发表于 2022-1-7 01:04:29 | 显示全部楼层   湖北省武汉市
.............................
回复 支持 反对

使用道具 举报

签到天数: 1 天

发表于 2019-9-7 22:40:36 | 显示全部楼层   广东省广州市
谢谢分享!
回复 支持 1 反对 0

使用道具 举报

发表于 2019-4-13 20:05:31 | 显示全部楼层   广东省东莞市
用 易语言写mqtt报文协yi  这个现实吗
回复 支持 1 反对 0

使用道具 举报

结帖率:100% (7/7)
发表于 2019-3-1 12:47:07 | 显示全部楼层   江西省南昌市
学习一下。。。
回复 支持 反对

使用道具 举报

结帖率:22% (2/9)
发表于 2019-2-18 06:00:39 高大上手机用户 | 显示全部楼层   广东省深圳市
没有易语言和
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表