基于MQTT协议的 org.eclipse.paho.client.mqttv3 源码学习(一)
来源:互联网 发布:java调用javascript 编辑:程序博客网 时间:2024/06/08 11:11
一、MQTT协议简叙
MQTT 有以下特点:
- 使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合
- 使用TCP/IP提供网络连接
- 有三种发布消息服务质量
- “至多一次 Qos level=0”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
- “至少一次Qos level=1”,确保消息到达,但消息重复可能会发生。
- “只有一次Qos level=2”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。
- 小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量。
- 使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制。
MQTT 限制:
- MQTT协议传输内容格式目前只支持2中,一个为UTF-8和askii,传输的内容最大为256M
- 目前用的比较多的基于MQTT协议的消息服务器mosquitto socket 最大连接数仅5W左右。
MQTT消息类型(4-7),使用4位二进制表示,可代表16种消息类型:
0->保留 ;1->客户端请求连接到服务器;2->连接确认;3->发布消息;4->发布确认;5->发布收稿(有保证的交付第一部分);
6->出版发行(有保证的交付第二部分);7->发布完整(有保证的交付第三部分);8->客户端订阅请求;9->订阅确认;
10->客户端退订请求;11->退订确认;12->ping请求;13->ping响应;14->客户端端口;15->保留;
三、MQTT消息发布流程
下图是消息的发布和确认等一些流程,主要是跟消息发布者所设定的QoS level有关。
好了,MQTT协议大致介绍了一下,现在进入对源码的分析、
四、目录分析
org.eclipse.paho.client.mqttv3 :主要用于对外提供服务,此包里提供的整个功能。
org.eclipse.paho.client.mqttv3.internal: 提供了对mqttv3 中的接口的实现。
org.eclipse.paho.client.mqttv3.internal.nls: 国际化相关文件。学习中可以忽略
org.eclipse.paho.client.mqttv3.internal.security:MQTT支持SSL加密,这个包内实现了基于TLS协议SSLSocket;
org.eclipse.paho.client.mqttv3.internal.wire : MQTT协议中报文信息,里面包含有心跳包、订阅包、发布包、确认包等
org.eclipse.paho.client.mqttv3.persist:发布信息持久化类,MQTT提供两种保持发布消息的方式,一种是将信息保持到文件中,
一种是直接保持 到 内存中。
org.eclipse.paho.client.mqttv3.util:工具类。
org.eclipse.paho.client.mqttv3.logging:日志包
由此可以看出学习基于MQTT协议的paho,只需要啃下蓝色部分包内的内容,基本上就全部掌握了。
- 基于MQTT协议的 org.eclipse.paho.client.mqttv3 源码学习(一)
- 基于MQTT协议的 org.eclipse.paho.client.mqttv3 源码学习(一)
- 基于MQTT协议的 org.eclipse.paho.client.mqttv3 源码学习(二)
- 基于MQTT协议的 org.eclipse.paho.client.mqttv3 源码学习
- 基于MQTT协议的 org.eclipse.paho.client.mqttv3 源码学习(二)
- 基于MQTT协议的 org.eclipse.paho.client.mqttv3 源码学习(二)
- 基于MQTT协议的 org.eclipse.paho.client.mqttv3 源码学习(二)
- MQTT协议之订阅及发布(使用paho-mqtt-client或mqttv3实现)
- MQTT协议之订阅及发布(使用paho-mqtt-client或mqttv3实现)
- MQTT协议实现Eclipse Paho学习总结一
- MQTT协议实现Eclipse Paho学习总结一
- MQTT协议实现Eclipse Paho学习总结一
- MQTT协议实现Eclipse Paho学习总结二
- MQTT协议实现Eclipse Paho学习总结二
- 对 mqtt client paho的简单封装
- 基于paho在android平台上实现MQTT Client间的简单通信
- MQTT协议 Python Paho
- Eclipse paho实现的MQTT Java客户端
- 快速沃尔什变换(FWT) 学习笔记
- BeanFactory 和ApplicationContext(Bean工厂和应用上下文)
- 看脸的世界:牙齿整齐找工作更容易
- 八月份前端面试经验
- 【Maven】配置私有仓库
- 基于MQTT协议的 org.eclipse.paho.client.mqttv3 源码学习(一)
- JAVA线程安全相关数据结构使用建议
- java动态代理
- MS08-067漏洞复现
- 根据高度图计算体积等。
- unity之使用unet创建局域网游戏
- DataTables学习笔记(一)
- POJ 2739 Sum of Consecutive Prime Numbers(素数打表 + 暴力)
- JavaScript创建JSON对象