MQTT服务器关闭:你的设备是否受影响? (mqtt服务器close)

MQTT(Message Queuing Telemetry Transport)是一种轻量级的物联网通信协议,广泛应用于物联网设备通信领域。然而,最近国内一家MQTT服务器提供商宣布关闭其服务,并可能彻底下线,在此背景下我们需要探讨MQTT服务器关闭对设备的影响。

影响1:通信中断

MQTT服务器是物联网设备之间通信的“中介”,一旦服务器关闭,设备之间的通信将被中断,导致设备无法正常工作。此外,有些设备上可能存储了MQTT服务器的地址信息,一旦服务器关闭,这些设备将无法重新连接其他MQTT服务器。

影响2:数据存储丢失

MQTT服务器只是传输数据的“传送带”,但实际上不少企业和开发者在MQTT服务器上选择存储相关的状态数据、传感器数据等,因此在服务器关闭后,这些数据将会丢失。对于对设备状态和存储数据有重要依赖的企业和开发者来说,这个问题将会比通信中断更加致命。

影响3:升级问题

许多设备的固件版本都默认设置了一个MQTT服务器地址,在升级固件时,设备可能会重新连接到原来的MQTT服务器上。如果该MQTT服务器已经关闭,则设备将无法获取新版本的固件,并且可能会一直陷入“失败循环”,这对设备的升级工作带来了很大威胁。

解决方案

针对MQTT服务器关闭后的这些问题,我们可以从以下角度出发解决:

1.选择可靠的MQTT服务器提供商

选择具有稳定性、服务能力和可扩展性的MQTT服务器提供商。特别是对于在MQTT服务器上存储了重要数据的企业和开发者来说,更应该谨慎选择MQTT服务器提供商。

2.本地备份

对于需要存储数据的设备和个人来说,应该备份数据并存储在本地。在MQTT服务器关闭后,备份的数据可以恢复,并且不会因为服务器不可用而产生损失。

3.升级固件

在升级固件时,我们应该使用默认的地址信息,而不是强制指定原来的MQTT服务器地址。这样可以避免因为MQTT服务器关闭而影响固件的升级。

结论

MQTT服务器的关闭对于物联网设备的影响是显而易见的。为了保证设备的正常工作,我们需要采取措施避免这些影响。企业和开发者应该选择可靠的MQTT服务器提供商,备份数据并存储在本地,以及在固件升级时使用默认的地址信息。只有这样,我们才能保证设备的正常运行和数据的安全性。

相关问题拓展阅读:

Android 中使用MQTT(之一篇)

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议。它是一种发布/订阅,极其简单和轻量级的消息传递协议,专为受限设备和低带宽,高延迟或不可靠的网络而设计。它的设计思想是轻巧、开放、简单、规范,易于实现。这些特点使得它对很多场景来说都是很好的选择,特别是对于受限的环境如机器与机器的通信(M2M)以及物联网环境。相对于XMPP,MQTT更加轻量级,并且占用的宽带低。

MQTT协议有以下特点:

那么问题来了?重连连接成功后重复接收到最后一条消息

MQTT推送消息订阅端重复接收问题。

(背景)订阅端断开的时候,发布端多次推送消息。

(现象)订阅端启动时,接收到最后一条推送消歼启息有两次;即使Qos设置为2;依然是两次。

经排查是因为

MqttMessage的Retained设置为了true;

该值很多文章上只说了是 消息保留机制,若设置为true,厅改档mqtt服务器会保留每次发布的消息;较少提到 若订阅某主题的客户端重启,则会把此主题之前发布的消息重新推送到客户端。该值默认为false;去掉修改该值即可

那么问题来了?重连连接后手动那么多遗漏的消息,怎么选择只接收最新的一条消息呢?

MQTT推送消息订阅端重复接收问题。

(背景)订阅端断开的时候,扮乱发布端多次推送消息。

(现象)订阅端启动时,接收到msg1,msg2,msg3 (这三个消息都是同一个类型消息,只需要处理最新的msg3就好,不然界面会刷新三次)这个谁有什么好办法没呢?

GitHub地址:

mqtt的官方文档:

Github上有中文翻译:

在module的build.gradle文件中添加依赖

在 AndroidManifest.xml 添加限权

在 AndroidManifest.xml 注册Service (MyMqttService为自己写的服务,下文会讲到)

mqtt服务器close的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于mqtt服务器close,MQTT服务器关闭:你的设备是否受影响?,Android 中使用MQTT(之一篇)的信息别忘了在本站进行查找喔。


数据运维技术 » MQTT服务器关闭:你的设备是否受影响? (mqtt服务器close)