MQTT协议简介及MQTT xml文档配置介绍

by:授客 QQ:1033553122

1. MQTT协议介绍

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

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

2. MQTT协议原理

  • 实现MQTT协议需要:客户端和服务器端
  • MQTT协议中有三种身份:发布者(publishers)、代理(Broker,服务器)、订阅者(Subscriber)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。
  • MQTT传输的消息分为:主题(Topic)和负载(payload)两部分

Topic - 可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload)

payload - 可以理解为消息的内容,是指订阅者具体要使用的内容

参考连接:http://itbilu.com/other/relate/4kHBsx_Pg.html#mqtt-topic

3. 方法

3.1 connect

连接服务器

<request>

<mqtt type="connect" clean_start="true" keepalive="20" will_topic="will_topic" will_qos="0" will_msg="will_msg" will_retain="false">

</mqtt>

</request>

说明:

连接

clean_start - true:开启一个新的会话。false:不清空会话信息,沿用之前相同Client_id的会话

 

keepalive - 以秒为单位,会话心跳时间,即从客户端传输一个控制报文结束到开始传输下一个控制报文,允许的最大时间间隔。客户端必须保证控制报文之间的传输时间间隔不能超过心跳时间。在没发送其它任何控制报文的时候,客户端必须发送一个PINGREQ报文。

 

客户端可以不管keepalive 时间,在任意时刻,发送PINGREQ,一遍检测网络和服务器正在工作。

 

如果keepalive值不为0,且服务器在1个半的keepalive时间内,没有收到来自客户端的控制报文,必须断开客户端的网络连接,正如网络连接失败

 

如果keepalive值为0,表示关闭心跳机制,这意味着服务器不要求断开处于不活动状态的客户端

keepalive实际值是由应用程序指定的,通常为几分钟。

 

will_qos - 指定发布will_msg时的QoS级别。如果Will Flag为0,那么will_qos必须为0,如果Will Flag为1,那么will_qos可以为0,1,2。不能为3。

 

will_topic - 主题名称

 

will_msg - 定义要发布到will_topic的应用程序消息。如果客户端意外的断开触发服务器PUBLISH此消息(消息主题名为:will_topic中指定的内容, 消息内容为 will_msg指定的内容)。

 

will_retain - 用于判断当will_msg发布后,是否保留will_msg。如果Will Flag设置为0,will_retain必须设置为0,如果如果Will Flag设置为1,如果will_retian设置为0,服务器发布will_msg后,必须不保留will_msg消息,如果will_retian设置为1,服务器发布消息will_msg后,必须保留will_msg。tsung中will_retain可选值true(对应1),false(对应0)

参考连接:

http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718028

3.2 publish

发布消息

<request subst="true">

<mqtt type="publish" topic="test_topic" qos="1"  

                  retained="true">test_message

  </mqtt>

</request>

 

说明:

topic - 主题名称

qos - 值为0:至多发送一次,为1: 至少发布一次,为2: 只发送一次

retained  - 如果设置为1,服务器必须存储来自客户端发送给服务器的发布消息中的应用消息和Qos,这样当订阅匹配其主题名称时,把存储的内容发送给订阅者。如果设置为0,服务器必须存储来自客户端发送给服务器的发布消息,且不允许移除、替换已经存在的保留消息。

 

参考连接:

http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718037

 

3.3 disconnect

断开连接

<request>

  <mqtt type="disconnect"></mqtt>

</request>

3.4 subscribe

订阅主题

<request subst="true">

    <mqtt type="subscribe" topic="test_topic" qos="1"></mqtt>

</request>

说明:

topic - 想要订阅的主题名称

qos - 如果设置为1,针对QoS 0应用程序消息,客户端最多只能收到一份消息,针对Qos 2,客户端可能会收到两份重复的消息。

 

如果设置为0,以Qos2发送的应用消息在传输给客户端,可能会丢失,而以Qos 1发送的应用消息在传输给客户端时也可能会丢失或者重复。

 

参考连接:

http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718063

3.5 waitForMessages

等待消息

<request>

    <mqtt type="waitForMessages" timeout="60"></mqtt>

</request>

说明:

timeout - 设置等待消息超时时间,单位秒

3.6 unsubscribe

取消订阅主题

<request subst="true">

<mqtt type="unsubscribe" topic="test_topic"></mqtt>

</request>

说明:

topic - 想要取消订阅的主题名称

Tsung MQTT协议简介及MQTT xml文档配置介绍的更多相关文章

  1. dom4j解析xml文档全面介绍

    一.dom4j介绍 dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用使用的特点, ...

  2. 004Maven_Pom.xml文档的介绍

    很重要的一个文档,具体介绍如下:

  3. Java高级特性 第13节 解析XML文档(1) - DOM和XPath技术

    一.使用DOM解析XML文档 DOM的全称是Document Object Model,也即文档对象模型.在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称DOM树 ...

  4. Oracle 远程访问配置 在 Windows Forms 和 WPF 应用中使用 FontAwesome 图标 C#反序列化XML异常:在 XML文档(0, 0)中有一个错误“缺少根元素” C#[Win32&WinCE&WM]应用程序只能运行一个实例:MutexHelper Decimal类型截取保留N位小数向上取, Decimal类型截取保留N位小数并且不进行四舍五入操作

    Oracle 远程访问配置   服务端配置 如果不想自己写,可以通过 Net Manager 来配置. 以下配置文件中的 localhost 改为 ip 地址,否则,远程不能访问. 1.网络监听配置 ...

  5. XmlReader和XElement组合之读取大型xml文档

    简介 在.NET framework 中存在大量操作xml数据的类库和api,但在.NET framework 3.5后我们的首选一般就是linq to xml. linq to xml操作xml数据 ...

  6. 【JAVA与DOM4J实现对XML文档的CRUD操作】

    一.简介 1.网上下载DOM4J 1.6.1压缩包,解压开之后,发现几个目录和一个jar文件,jar文件是必须的文件其它目录: docs目录:帮助文档的目录,单击index.html: Quick s ...

  7. Python(文件、文件夹压缩处理模块,shelve持久化模块,xml处理模块、ConfigParser文档配置模块、hashlib加密模块,subprocess系统交互模块 log模块)

    OS模块 提供对操作系统进行调用的接口 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname")  改变当前脚本工作目 ...

  8. 文档对象模型操作xml文档

    简介 :文档对象模型(DOM)是一种用于处理xml文档的API函数集. 2.1文档对象模型概述 按照W3C的定义,DOM是“一种允许程序或脚本动态地访问更新文档内容,结构和样式的.独立于平台和语言的规 ...

  9. IOS 解析XML文档

    前段时间想找点事做,就是试着看能不能用豆瓣的API做点什么,于是就碰到了这个问题——XML解析. 老师还没讲,只能自己去查. XML文档解析主要有SAX和DOM两种模式,IOS上两种模式都可以用,这里 ...

随机推荐

  1. 【Spark调优】内存模型与参数调优

    [Spark内存模型] Spark在一个executor中的内存分为3块:storage内存.execution内存.other内存. 1. storage内存:存储broadcast,cache,p ...

  2. Api 文档管理系统 RAP2 环境搭建

    Api 文档管理系统 RAP2 环境搭建  发表于 2018-03-27 |  分类于 Api |  评论数: 4|  阅读次数: 4704  本文字数: 4.8k |  阅读时长 ≍ 9 分钟 RA ...

  3. Django -- 发送HTML格式的邮件

    提前在setting中设置邮箱server from django.core.mai import EmailMessage subject, from_email, to = 'xxx', 'nor ...

  4. Android Metro风格的Launcher开发系列第三篇

    前言: 各位小伙伴,又到了每周更新文章了时候了,本来是周日能发出来呢,这不是赶上清明节吗,女王大人发话了,清明节前两天半陪她玩,只留给我周一下午半天时间写博客,哪里有女王哪里就有压迫呀有木有!好了闲话 ...

  5. 项目ITP(五) spring4.0 整合 Quartz 实现任务调度

    前言 系列文章:[传送门] 项目需求: 二维码推送到一体机上,给学生签到扫描用.然后需要的是 上课前20分钟 ,幸好在帮带我的学长做 p2p 的时候,接触过.自然 quartz 是首选.所以我就配置了 ...

  6. struts2--使用<s:token></s:token>标签防止重复提交

    取个小例子:这是网页: <body> <s:actionerror/> <s:form action="LoginAction" method=&qu ...

  7. Spring Boot 系列(七)Swagger2-生成RESTful接口文档

    Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件的方法,参数和模型紧密集成到服 ...

  8. 【原创】VirtualBox 磁盘扩容教程

    问题和环境说明 环境: 主机:Ubuntu 15.10 客户机:Windows 7 x64 VirtualBox:5.0.10 虚拟机磁盘类型:VDI(VirtualBox磁盘映像) 问题: 在虚拟机 ...

  9. Centos7安装MySQL8.0 - 操作手册

    MySQL 8 正式版 8.0.11 已发布,官方表示 MySQL 8 要比 MySQL 5.7 快 2 倍,还带来了大量的改进和更快的性能! 一.  Mysql8.0版本相比之前版本的一些特性 1) ...

  10. MyBatis源码解析(一)——执行流程

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6603926.html 一.MyBatis简介 MyBatis框架是一种轻量级的ORM框架, ...