MQTT未接收到消息问题

MQTT未接收到消息问题,第1张

根据接口文档订阅MQTT消息,没有接收到消息;

使用>

首先需要搭建MQTT服务器,然后搭建MySQL数据库,然后使用海为组态写段程序,最后配置客户端验证即可。具体可以参考内容 Haiwell(海为)HMI/CBOX/IPC MQTT 配置应用教程 网页链接

1、打开群晖Docker,注册表搜索:mqtt;
2、点击下载好的镜像文件创建容器,输入容器名字,点击高级设置
3、勾选启用自动重新启动
4、点击网络—-勾选与docker host相同的网络,点击应用,一直下一步直到创建完成

先决条件
在开始本教程之前,您需要:
一个Ubuntu 1604服务器,具有非root,sudo启用的用户和基本防火墙设置,如在这个Ubuntu 1604服务器设置教程中详细描述的。
指向您的服务器的域名,按照如何使用DigitalOcean设置主机名 。 本教程将使用mqttexamplecom贯穿始终。
第1步 – 安装Mosquitto
Ubuntu 1604在默认软件存储库中有一个相当新版本的Mosquitto。使用非root用户登录,并使用apt-get安装Mosquitto。
sudo apt-get install mosquitto mosquitto-clients
默认情况下,Ubuntu将在安装后启动Mosquitto服务。让我们测试默认配置。我们将使用我们刚刚安装的一个Mosquitto客户端订阅我们的代理上的一个主题
主题是您向其发布消息和订阅的标签。 它们被布置为层次结构,因此,例如,您可以具有sensors/outside/temp和sensors/outside/humidity 。如何安排主题取决于你和你的需要。在本教程中,我们将使用一个简单的测试主题来测试我们的配置更改。
第二次登录到您的服务器,因此您有两个端子并排。在新终端中,使用mosquitto_sub订阅测试主题:
mosquitto_sub -h localhost -t test
-h用于指定MQTT服务器的主机名, -t是主题名。 由于mosquitto_sub正在等待消息到达,因此在按ENTER后没有输出。切换回您的其他终端并发布消息:
mosquitto_pub -h localhost -t test -m "hello world"

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地址: >

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13418899.html

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

发表评论

登录后才能评论

评论列表(0条)

保存