mqtt

MQTT 5.0

一世执手 提交于 2020-02-25 19:01:12
MQTT 5.0 - 发布订阅模式介绍 MQTT 协议的核心在于发布订阅模式,在本文中,我们将对这一模式进行深入的介绍。 发布订阅模式 发布订阅模式区别于传统的客户端-服务器模式,它使 发送消息的客户端(发布者)与接收消息的客户端(订阅者)分离 ,发布者与订阅者不需要建立直接联系。我们既可以让多个发布者向一个订阅者发布消息,也可以让多个订阅者同时接收一个发布者的消息,它的精髓在于由一个被称为代理的中间角色负责所有消息路由和分发的工作。传统的客户端-服务器模式可以实现类似的效果,但是无法做到像发布订阅模式这样简洁和优雅。 发布订阅模式的优点在于发布者与订阅者的解耦,这种解耦表现在以下两个方面: 空间解耦,订阅者与发布者不需要建立直接连接,新的订阅者想要加入网络时不需要修改发布者的行为。 时间解耦,订阅者和发布者不需要同时在线,即便不存在订阅者也不影响发布者发布消息。 消息路由 代理作为发布订阅模式的关键角色,它需要准确、高效地向订阅者转发其期望的消息,一般来说,比较常用的有以下两种方式: 根据主题。订阅者向代理订阅自己感兴趣的主题,发布者发布的所有消息中都会包含自己的主题,代理根据消息的主题判断需要将消息转发给哪些订阅者。 根据消息内容。订阅者定义其感兴趣的消息的条件,只有当消息的属性或内容满足订阅者定义的条件时,消息才会被投递到该订阅者。严格来讲,主题也可以算是消息内容的一种。

白话MQTT是个啥

旧街凉风 提交于 2020-02-25 16:57:29
1. MQTT是什么? MQTT全称消息队列遥测传输 (Message Queuing Telemetry Transport)。其主要提供了订阅/发布两种消息模式,更为简约、轻量,易于使用,特别适合于受限环境(带宽低、网络延迟高、网络通信不稳定)的消息分发,属于物联网(Internet of Thing)的一个标准传输协议。 2. MQTT的历史 IBM公司的安迪·斯坦福-克拉克及Arcom公司的阿兰·尼普于1999年撰写了该协议的第一个版本。 IBM公司在2013年就向结构化资讯标准促进组织提交了 MQTT 3.1 版规范,并附有相关章程,以确保只能对规范进行少量更改。 2019年四月,MQTT 发布v5.0版本,现在是官方的OASIS标准。 3. MQTT有哪些用途 自1999年以来,MQTT已广泛应用于各个行业。因为MQTT已经成为标准的物联网传输协议,很多的物联网设备都采用这些协议传输数据,而各行各业基本上都少不了各种各样的物联网设备。 除MQTT协议外,以下协议也是常见的工业协议: OPC UA Modbus TCP /RTU PROFINET RS232/RS485 4. MQTT的服务质量 MQTT支持三种消息发布服务质量(QoS): 至多一次”(QoS==0) 消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据

MQTT 简介

夙愿已清 提交于 2020-02-24 20:02:05
MQTT 简介   MQTT 的全称为 Message Queue Telemetry Transport,是一种基于发布/订阅(Publish/Subscribe)模式的轻量级通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。为了满足低电量消耗和低网络带宽的需求,MQTT 协议在设计之初就包含了以下一些特点: 实现简单 提供数据传输的 QoS 轻量、占用带宽低 可传输任意类型的数据 可保持的会话(session) MQTT 协议特性 基于 TCP 协议的应用层协议; 采用 C/S 架构; 使用订阅/发布模式,将消息的发送方和接受方解耦; 提供 3 种消息的 QoS(Quality of Service): 至多一次,至少一次,只有一次; 收发消息都是异步的,发送方不需要等待接收方应答。 MQTT 跟传统的消息队列相比,有以下一些区别: 在传统消息队列中,在发送消息之前,必须先创建相应的队列;在 MQTT 中,不需要预先创建要发布的主题(可订阅的 Topic); 在传统消息队列中,未被消费的消息总是会被保存在某个队列中,直到有一个消费者将其消费;在 MQTT 中,如果发布一个没有被任何客户端订阅的消息,这个消息将被直接扔掉; 在传统消息队列中,一个消息只能被一个客户端获取,在 MQTT 中,一个消息可以被多个订阅者获取,MQTT

Thingsboard之MQTT设备协议简介

旧时模样 提交于 2020-02-24 18:21:11
MQTT基础知识 MQTT是一种轻量级的发布 - 订阅消息传递协议,可能使其最适合各种物联网设备。您可以在此处找到有关MQTT的更多信息。 ThingsBoard服务器节点充当MQTT Broker,支持QoS级别0(最多一次)和1(至少一次)以及一组预定义主题。 客户端库设置 您可以在Web上找到大量MQTT客户端库。本文中的示例将基于Mosquitto,MQTT.js和Paho,要设置其中一个工具。 客户端库设置 您可以在Web上找到大量MQTT客户端库。本文中的示例将基于Mosquitto,MQTT.js和Paho,要设置其中一个工具。 键值格式 默认情况下,ThingsBoard支持JSON中的键值内容。Key始终是一个字符串,而value可以是string,boolean,double或long。也可以使用自定义二进制格式或某些序列化框架。有关详细信息,请参阅物模型。例如: {"stringKey":"value1", "booleanKey":true, "doubleKey":42.0, "longKey":73} 遥测上传API 为了将遥测数据发布到ThingsBoard服务器节点,请将PUBLISH消息发送到以下主题: v1/devices/me/telemetry 最简单的支持数据格式是: {"key1":"value1", "key2":"value2"}

快速上手和理解物联网开发平台

孤者浪人 提交于 2020-02-22 16:43:29
快速理解和上手物联网开发平台 文章目录 快速理解和上手物联网开发平台 导读 关于物联网 关于本课程 自我介绍 本文介绍 一、深入了解 MQTT 协议 1.1 MQTT 协议简介与基本概念 1.2 MQTT 主题 1.3 MQTT 控制报文格式 1.3.1 固定报文头 1.3.2 可变报文头 1.3.3 有效负载 1.4 MQTT 控制报文 1.4.1 CONNECT 1.4.2 PUBLISH 1.5 消息服务质量 QoS 1.6 MQTT 与传统 MQ 对比 二、走进 EMQX 2.1 认证访问控制 2.2 插件系统 2.3 共享订阅 2.4 系统主题 2.5 管理监控 API 2.6 EMQX 集群 三、 MQTT Client 库实践 3.1 建立连接 3.2 订阅主题 3.3 发布消息 四、 MySQL 认证和访问控制 4.1 MySQL 认证 4.2 主题设计 4.3 MySQL 访问控制 五、 处理设备上行数据 5.1 共享订阅 5.1.1 共享订阅主题设计 5.1.2 共享订阅客户端权限控制 5.1.3 消息流转 5.1.4 实现 5.2 WebHook 机制 5.3 消息去重 六、下行数据处理方案 七、功能规划和实现 7.1 EMQX 集群 7.2 设备生命周期管理 7.2.1 设备动态注册 7.2.2 设备上下线状态管理 7.2.3 设备删除与禁用 7.3

MQTT的学习研究(1)MQTT学习网站

狂风中的少年 提交于 2020-02-20 12:07:07
http://www.doc.ic.ac.uk/~sl203/?id=37 MQTT的学习研究(一)MQTT学习网站 MQTT的官方推荐网站: http://mqtt.org/software 使用IBM 的MQTT协议实现push消息 地址: http://tokudu.com/2010/how-to-implement-push-notifications-for-android/ google code 下载MQTT moquette Broker 地址: http://code.google.com/p/moquette-mqtt/ GIT 下载MQTT moquette client 地址: https://github.com/fusesource/mqtt-client 参考 链接 http://stackoverflow.com/questions/1243066/does-android-support-near-real-time-push-notification http://stackoverflow.com/questions/1378671/push-notifications-in-android-platform http://blog.boxedice.com/2010/10/07/android-push-notifications

实现网页版MQTT

a 夏天 提交于 2020-02-13 03:33:31
一、目录结构 1、目录结构 二、代码 css/index.css *{ padding: 0; margin: 0; } .left{ float: left; } .right{ float: right; } textarea{ resize: none; } #box{ overflow: hidden; width: 775px; height: 720px; /* border: 1px solid black; */ margin: 0 auto; padding: 30px 0 0 20px; box-sizing: border-box; background: #eee; } /* 连接配置开始 */ .disposition{ padding: 10px; width: 430px; height: 470px; border: 1px solid #ccc; box-sizing: border-box; position: relative; border-right: none; } .disposition li{ width: 430px; list-style: none; line-height: 60px; font-size: 20px; position: relative; } .disposition li input{ width:

MQTT v5 (MQTT 5.0) 新特性介绍

筅森魡賤 提交于 2020-02-10 12:42:32
https://blog.csdn.net/mrpre/article/details/87267400 背景 MQTT v3.1.1 作为一个经典的版本,一般能够满足大部分需求;为了避免落后,我们也介绍一下 v5 版本。(仅介绍特性) 作为 MQTT 3.1.1 的后续版本,为什么版本号直接变成了 5.0?因为 3.1.1 在 CONNECT 的时候指定的 Protocol Version 为 4,所以后续版本只有使用 5 了。 MQTT的新版本(v5.0)在 v3的基础上,增加了以下的特性: 协议上,增加了一个 Property字段,正是这个字段,使得 MQTT 5.0 可以支持众多的新特性。而在MQTT 3.1.1中,MQTT没有任何可以拓展的地方,限制了MQTT拓展功能的可能性。 会话过期 把清理会话标志拆分成新开始标志(指示会话应该在不使用现有会话的情况下开始)和会话过期间隔标志(指示连接断开之后会话保留的时间)。会话过期间隔时间可以在断开时修改。把新开始标志设置为1且会话过期间隔标志设置为0,等同于在MQTT v3.1.1中把清理会话(Clean Session)设置为1。 消息过期 允许消息在发布时设置一个过期间隔。 所有确认报文原因码 更改所有响应报文以包含原因码,包括CONNACK,PUBACK,PUBREC,PUBREL,PUBCOMP,SUBACK

MQTT协议简介

依然范特西╮ 提交于 2020-02-07 14:12:40
  MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于 发布/订阅 ( publish/subscribe )模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。做为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。      在 MQTT 协议中,给出了三种传递消息时能够提供的服务质量标准,这三种服务质量从低到高依次是: At most once: 至多一次。消息在传递时,最多会被送达一次。换一个说法就是,没什么消息可靠性保证,允许丢消息。一般都是一些对消息可靠性要求不太高的监控场景使用,比如每分钟上报一次机房温度数据,可以接受数据少量丢失。 At least once: 至少一次。消息在传递时,至少会被送达一次。也就是说,不允许丢消息,但是允许有少量重复消息出现。 Exactly once:恰好一次。消息在传递时,只会被送达一次,不允许丢失也不允许重复,这个是最高的等级   这个服务质量标准不仅适用于 MQTT,对所有的消息队列都是适用的。   我们现在常用的绝大部分消息队列提供的服务质量都是 At least once,包括 RocketMQ