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

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

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


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 - 想要取消订阅的主题名称

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
2天前
|
XML Java 数据格式
Spring容器Bean之XML配置方式
通过对以上内容的掌握,开发人员可以灵活地使用Spring的XML配置方式来管理应用程序的Bean,提高代码的模块化和可维护性。
17 6
|
19天前
|
数据采集 传感器 监控
多协议网关BL110钡铼6路RS485转MQTT协议云网关
BL110钡铼6路RS485转MQTT协议云网关是一款高性能、易配置的工业级设备,适用于各种需要远程监控和数据采集的物联网应用场景。通过将传统RS485设备的数据转换为MQTT协议并上传至云平台,实现了设备的远程管理和智能控制,极大地提升了系统的管理效率和响应速度。
25 2
|
2月前
|
网络协议 物联网 网络性能优化
物联网协议比较 MQTT CoAP RESTful/HTTP XMPP
【10月更文挑战第18天】本文介绍了物联网领域中四种主要的通信协议:MQTT、CoAP、RESTful/HTTP和XMPP,分别从其特点、应用场景及优缺点进行了详细对比,并提供了简单的示例代码。适合开发者根据具体需求选择合适的协议。
65 5
|
2月前
|
XML 存储 JavaScript
|
3月前
|
XML Java 数据格式
Spring IOC—基于XML配置Bean的更多内容和细节(通俗易懂)
Spring 第二节内容补充 关于Bean配置的更多内容和细节 万字详解!
247 18
Spring IOC—基于XML配置Bean的更多内容和细节(通俗易懂)
|
3月前
|
XML Java 应用服务中间件
springMVC01,springMVC的执行流程【第一个springMVC例子(XML配置版本):HelloWorld】
通过一个HelloWorld实例,介绍了SpringMVC的基本概念、执行流程,并详细讲解了如何创建和配置第一个SpringMVC项目(基于XML)。
springMVC01,springMVC的执行流程【第一个springMVC例子(XML配置版本):HelloWorld】
|
2月前
|
XML 分布式计算 资源调度
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(一)
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(一)
181 5
|
2月前
|
XML 资源调度 网络协议
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(二)
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(二)
143 4
|
2月前
|
分布式计算 资源调度 Hadoop
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
88 4
|
2月前
|
XML Java 数据格式
手动开发-简单的Spring基于XML配置的程序--源码解析
手动开发-简单的Spring基于XML配置的程序--源码解析
86 0
下一篇
DataWorks