黑群晖怎样搭建MQTT服务器

黑群晖怎样搭建MQTT服务器,第1张

1、打开群晖Docker,注册表搜索:mqtt;

2、点击下载好的镜像文件创建容器,输入容器名字,点击高级设置

3、勾选启用自动重新启动

4、点击网络—-勾选与docker host相同的网络,点击应用,一直下一步直到创建完成

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地址: https://github.com/eclipse/paho.mqtt.android

mqtt的官方文档: http://mqtt.org/documentation

Github上有中文翻译: https://github.com/mcxiaoke/mqtt

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

在 AndroidManifest.xml 添加限权

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


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/405395.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存