MQTT5.0是新一代的标准
Better Error Handling for More Robust System
是说更好的冗错性、更稳定、健壮的系统。
- 错误调式的易用性优化
- 消息过期、状态过期
- 流量控制:限制消息大小、限制发送频率
More Scalability for Cloud Native Computing
更好的扩展性
- 共享订阅
- Topic主题别名
Greater Flexibility and Easier Integration
更好的灵活性和易用性
- 用户属性扩展
- Payload标识(是否为UTF8字符串,binary or text)& Content Type
总而言之,MQTTV5解决了MQTTv3.1.1协议的诸多限制,逐渐成为IoT全行业的通讯协议标准。
(上述总结源自:https://www.hivemq.com/blog/mqtt5-essentials-part3-upgrade-to-mqtt5-now/)
拥抱MQTT5.0的变化
上述文章给MQTT5.0的新特性做了分类,和我不谋而合。对其中的特性划分,我也有自己的一些认识:
- 性能优化方面是一致的,有CleanSssion优化、消息TTL、流控。
- 易用性方面,增加了原因码、订阅标识符和选项、主题别名、服务重定向
- 扩展性方面,增加了Payload标识、Content-type、用户属性、Request/Response
(这里易用性和扩展性的划分刚好和老外的文章相反,不知道是不是中西文化的差异)
- 安全性方面,增加了客户端增强认证
MQTT v3过渡到MQTT v5
通过对MQTTV3的长期使用和总结,我将MQTTV5的特性支持做了排序:
- 可优先选择支持性能方面的特性,原因不用多说,服务稳定是首要目标,能够增强稳定的基础上降低成本消耗,何乐不为。
- 根据客户端使用习惯,需要尽快支持原因码、增强认证、Request/Response
- 共享订阅、主题别名、订阅标识符这些,我放在了第三位。虽然这些功能看似很酷,但是即便服务器未支持也不影响客户端使用
- 用户属性,该功能扩展性较强,可根据实际情况选择开发