MQTT 简介

MQTT 全称是 Message Queue Telemetry Transport,是一个轻量级的“发布/订阅”消息传输协议。

官网 http://mqtt.org/

发布/订阅

MQTT 的基本概念是发布消息、订阅主题,即“pub/sub”。这需要有一个消息分发服务器和一个或多个客户端。当然,只有一个客户端也就没有意义了。每一个客户端可以订阅某些主题,可以发送各种主题的消息。服务器收到客户端的主题消息后发送给订阅这个主题的所有客户端。服务器的设计理念是使用简单、通用的接口,使得可以接受各种各样的客户端实现。比如说在一个传感器上的客户端,需要写数据到数据库的客户端,等等。

主题/订阅

主题的设置可以带有多个层级。层级之间通过斜杠 ‘/‘ 进行分隔。这样一个简单的设计可以达到非常灵活的订阅效果。用学校里的学生来举例:school-name/grade/class/student-name。这样一个主题具体到某一个学生,但同时带有很有用的上级信息。

而对主题的订阅,可以使用两个通配符 ‘+‘ 和 ‘#‘。+ 号可以匹配主题的一个层级,而 # 号可以匹配主题的一个或多个层级。有了通配符,就可以做到一个订阅,获取到多个符合条件的主题了。例如对于上述类型的学生主题,可能有以下几种:

① A 学校一年级二班的张三:A/1/2/zhangsan
② A 学校二年级二班的张三:A/2/2/zhangsan
③ B 学校一年级三班的张三:B/1/3/zhangsan
④ C 学校二年级三班的张三:C/2/3/zhangsan

订阅规则:

① 订阅 A 学校一年级二班所有的学生:A/1/2/+ —— 订阅上述主题①

② 订阅所有学校叫张三的学生:#/zhangsan —— 订阅上述所有四个主题

值得注意的是,主题所有层级的字段都可以为空,例如 /1/2、A//2、A/1/ 都是合法的主题设置。

消息传递服务质量

消息在客户端发送给服务器、服务器发送给客户端时,都可以设置对应的发送服务质量。一共有三个等级,等级越高越可靠。

  • 0:最多发送一次。消息只发送一次,没有接收确认。可能会由于网络环境较差导致没有准确送达。适合有定期数据发送,丢掉一两个数据无所谓的情况。
  • 1:最少发送一次。有接收确认。但网络较差或其他情况有可能导致消息重复发送,接收端多次收到同一份数据。
  • 2:确保发送一次。通过四次握手确保消息准确送达而且只送达一次。

需要根据具体的应用场景选择合适的级别。高可靠性意味着较高的延迟和较大的带宽需求。

消息保留

客户端发送的消息可以设置消息保留属性。可以使得这条消息发送到分发服务器之后,后面才连接进来而又订阅了这个条消息主题的客户端依然能够获取到它。适用于一些发送频率很低的消息。

简单会话/持久会话

客户端建立连接时设置该会话的属性。如果是简单会话(clean session),当它断开连接后又重新接入,虽然是同一个客户端,但先前的所有订阅都会被清空,需要重新进行订阅。如果是持久会话(durable session),则重新连接后可以保留先前订阅的主题,无需重新进行订阅。

客户端遗言

客户端可以设定“遗言”,在它因某种原因与服务器断开时发送最后一条消息。这条消息和其他消息一样,有主题、发送服务质量、消息留存属性。

参考:http://mosquitto.org/man/mqtt-7.html

2017-05-26 - 廖杰良

时间: 2024-11-10 03:30:33

MQTT 简介的相关文章

MQTT与Mosquitto服务器搭建以及Android推送(一)MQTT简介

文章钢要: 对MQTT协议有一定认识 对MQTT运行原理有一定了解 一.什么是MQTT MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议. 国内很多企业都广泛使用MQTT作为Android手机客户端与服务器端推送消息的协议.其中Sohu,Cmstop手机客户端中均有使用到MQTT作为消息推送消息. MQTT由于开放源代码,耗电量小等特点,将会在移动消息推送领域会有更多的贡献,在物联网领域,传感器与服务器的通信,信息

【随笔】MQTT简介

我们知道,将用户使用的设备称为客户端,将提供给用户信息的端口称为服务器端.两个端口之间可以通过多种通信协议进行交互,比如HTTP(同步)或者基于消息传递的异步. HTTP是一种同步无状态的协议,不支持推送,客户端通过轮询模拟推送,反复的轮询需要耗费额外的资源,这种情况下,MQTT协议更有优势: MQTT是基于消息传递的协议: 1.可以保持设备和服务器之间的长连接,避免反复的轮询,减少资源消耗,所以更加省电. 2.MQTT可以在设备和服务器之间建立双向连接,从而可以使用推送.

MQTT简介

MQTT是IBM开发的一个即时通讯协议,该协议支持所有的平台,几乎可以把所有联网的物品和外部连接起来,被用来当做传感器和致动器(比如通过Twitter让房屋联网)的通信协议 MQTT的特点: 使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合.这一点很类似于XMPP,但是MQTT的信息冗余远小于XMPP. 对负载内容屏蔽的消息传输. 使用TCP/IP提供网络连接.主流的MQTT是基于TCP连接进行数据推送的,但是同样有基于UDP的版本,叫做MQTT-SN.这两种版本由于基于不同的连接

MQTT压力测试工具之JMeter插件教程

摘要: MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)主要用于移动Push,移动IM,物联网M2M,物联网采集等,这些应用场景的特点是客户端的连接设备数比较多,那么如何在系统上线之前验证系统能否承受预先设计的压力呢? MQTT简介 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,它比较适合于在低带宽.不可靠的网络的进行远程传感器和控制设备通讯等,正在日益成为物

MQTT是IBM开发的一个即时通讯协议,构建于TCP/IP协议上,是物联网IoT的订阅协议,借助消息推送功能,可以更好地实现远程控制

最近一直做物联网方面的开发,以下内容关于使用MQTT过程中遇到问题的记录以及需要掌握的机制原理,主要讲解理论. 背景 MQTT是IBM开发的一个即时通讯协议.MQTT构建于TCP/IP协议上,面向M2M和物联网IoT的连接协议,采用轻量级发布和订阅消息传输机制.Mosquitto是一款实现了 MQTT v3.1 协议的开源消息代理软件,提供轻量级的,支持发布/订阅的的消息推送模式,使设备对设备之间的短消息通信简单易用. 基本概念 [MQTT协议特点]——相比于RESTful架构的物联网系统,MQ

MQTT入门篇

物联网(Internet of Things,IoT)最近曝光率越来越高.虽然HTTP是网页的事实标准,不过机器之间(Machine-to-Machine,M2M)的大规模沟通需要不同的模式:之前的请求/回答(Request/Response)模式不再合适,取而代之的是发布/订阅(Publish/Subscribe)模式.这就是轻量级.可扩展的MQTT(Message Queuing Telemetry Transport)可以施展拳脚的舞台. MQTT简介 MQTT是基于二进制消息的发布/订阅

转 【MQTT】在Windows下搭建MQTT服务器

MQTT简介 MQ 遥测传输 (MQTT) 是轻量级基于代理的发布/订阅的消息传输协议,设计思想是开放.简单.轻量.易于实现.这些特点使它适用于受限环境.该协议的特点有: 使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合. 对负载内容屏蔽的消息传输. 使用 TCP/IP 提供网络连接. 小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量. 使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制. 有三种消息发布服务质量:

MQTT协议及推送服务(二)

MQTT简介 MQTT全称叫做Message Queuing Telemetry Transport,意为消息队列遥测传输,是IBM开发的一个即时通讯协议.由于其维护一个长连接以轻量级低消耗著称,所以常用于移动端消息推送服务开发. MQTT特性 MQTT具有如下特性: 使用发布/订阅消息模式,提供一对多消息发布: 对负载内容屏蔽的消息传输: 使用TCP/IP进行网络连接: 主流的MQTT是基于TCP进行连接的,同样也有UDP版本的MQTT,但是不太常用,叫做MQTT-SN. 具有三种消息发布服务

MQTT协议(一)

一.MQTT简介 MQTT协议(Message Queuing Telemetry Transport)(消息队列遥测传输)是一种基于发布/订阅模式的“轻量级”消息协议,是IBM公司于1999年提出的,由Andy Stanford-Clark(IBM)和Arlen Nipper(Eurotech,现为Cirrus Link)于1999年开发.MQTT是一个基于TCP的发布订阅协议,设计的初始目的是为了适用于极有限的内存设备和低带宽的不可靠网络通信,非常适合物联网通信.MQTT 协议目前在 IoT