mqtt老是连不上_使用MQTT遇到问题?来这里找答案!

2023-05-16

Q:MQTT的开源资源多吗?

A:有很多,可以到MQTT的官网查阅(http://www.mqtt.org)。

Q:MQTT为什么一般不提供持久化的功能

A:mqtt协议里面是按照设备一直在线设计的,数据都是保存在内存里的。

Q:MQTT是不是很耗内存?

A:MQTT是比较吃内存的,emqtt的实测数据是:38W,内存占14G,CPU 15%。

Q:单片机缓存和处理能力有限,消息不能一次性发出去,此时,应该如何通过MQTT发布消息?

A:先组装publish协议的头,里面写好payload的长度,通过tcp发出去,然后一点一点发payload。

1、先确认发布内容的长度,然后组publish数据包头,填写payload长度,tcp:send(head),之后一段一段发送payload。

2、举个例子,如果一次发送1K,按照正常的tcp发送数据,一直发送完毕,就算这个publish结束了。

如果在tcp层send失败,那证明连接断开了,socket出现问题。此时需要重新连接mqtt服务器。

发送过程中,只要进行了重新连接,你需要重新发送,发送消息中途,只要断掉,就得重新连接。是否需要重发数据,取决于以前的数据是否被保存。

3、如果消息很重要,可以使用qos=1或者2。这样可以确保服务端收到消息。qos=1是指需要一个来回,qos=2是指需要四个来回,qos=0则非常简单,意思是只要send出去就不管了。

Q:session与client之间的关系是怎样的?

A:比如说一个硬件主板作为客户端,发起一个connect到mqtt服务器的MQTT连接请求。

emqtt服务端收到这个主板的连接请求之后,会在tcp层上和主板建立一个tcp连接。

此时,在emqtt内部,会产生一个进程和这个主板做数据通讯。与此同时,还会产生一个session进程,这个sessoin专门管理这个板子订阅的主题。

如果其他主板发布了这个主板感兴趣的主题,这个主板对应的session也会收到。如果这个session收到订阅的主题之后,发现对用的client还活着,就通过这个client把数据经过tcp发到这个板子上。

如果对用的client已经没有了,就说明板子和服务器断掉了,那么session就会把收到的订阅主题先保存在session里面。

下次主板再进行连接的时候,如果cleansession=false,那么就证明这个session没有清除。此时,系统就可以把以前收到的订阅消息发给主板了。

Q:emqtt如何证明连接上的client是否为同一个?

Emqtt与client连接的时候,需要设置一个clientid。当然,这个id也可以不设置。

A:如果不设置,emqtt服务端会自动产生一个唯一的id。因为如果需要用到session,就必须有一个唯一个id。如果你一定要收到离线消息的话,则必须使用确定的id了。

Q:emqtt的session时间可以修改吗?

A:可以修改。现在的时间是48小时。使用者可以根据实际使用情况调整时间,但是不能改成永久。

Q:emqtt的分布式是怎么回事?

A:简单说就是把几台服务器连接在一起。只要服务器不是全坏了,emqtt就可以正常运行。

Emqtt的数据是在几个节点上共享的。当某一个节点出现问题时,数据是不会丢失的。但是节点上的session数据则会丢失。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mqtt老是连不上_使用MQTT遇到问题?来这里找答案! 的相关文章

  • RabbitMQ MQTT集群方案官方说明

    RabbitMQ MQTT 官方网说明 官方地址 https www rabbitmq com mqtt html 从3 8开始 该MQTT插件要求存在一定数量的群集节点 这意味着三分之二 五分之三 依此类推 该插件也可以在单个节点上使用
  • hi3861 通过MQTT协议连接OneNet平台(配置好的环境+详细步骤)

    目录 前言 下载配置完毕的镜像 下载链接 修改Onenet信息 添加编译 编译 烧录 HiBurn下载 查看状态 作者留言 更多详情参考gitee网站 前言 hi3861单片机通过MQTT协议连接OneNet平台 下载配置完毕的镜像 下载链
  • 在微信小程序上使用 mqtt

    大家知道 微信小程序的websocket API他们自己定制了 这样一些运行在浏览器里的库默认是运行不了的 比如mqttjs这个库 https github com mqttjs MQTT js 由于搜狗公司兄弟团队的一个微信小程序要跑mq
  • 【单片机笔记】STM32+ESP8266通过AT指令WIFI连接阿里云MQTT服务器

    上一篇使用USB转串口的方式通过ESP8266wifi模块的方式成功连接上了阿里云 现在就要通过单片机来替换电脑上位机了 这样单片机自动的去调用并发送串口数据更加方便 也更加符合一个产品的开发 板载的传感器有NTC温度 光强 这两个主要用来
  • 【自用】无法通过ESP32创建HomeAssistant实体问题解决(MQTT对ESP32创建实体请求无应答)

    一 问题描述 1 使用 MQTTX 测试客户端能够创建实体 当通过 MQTTX 发送注册实体请求的时候 实体能够在 MQTT 服务器中注册成功 2 使用 ESP32 无法创建实体 在ESP32中通过 publish 函数发送注册请求的时候
  • 为什么MQTT被称为“轻量级”消息传递协议?

    As per 维基百科 and Mqtt org MQTT 是一种机器对机器 M2M 物联网 连接协议 它被设计为极轻发布 订阅消息传输 与其他 TCP IP 或基于套接字的协议相比 是什么让 MQTT 极其轻量级 MQTT的协议开销极小
  • 启用 TLS 的 mosquitto_sub

    我是 MQTT 新手 遇到一个令人沮丧的问题 我一直在使用MQTT fx订阅一个主题 我已经设置了 经纪商地址 Port 客户ID Enable SSL TLS Topic 这很好用 但我想使用 mosquitto sub 我尝试通过以下方
  • 用于测试的 MQTT 代理

    尝试创建一个订阅 MQTT 代理并处理数据的 Python 脚本 然而 MQTT 代理到目前为止还没有收到任何数据 这使得测试变得困难 我发现以下脚本可以订阅主题并打印出有效负载 但我似乎无法连接到测试代理 import paho mqtt
  • python 中基于 websocket 的 MQTT

    python 是否支持通过端口 8080 订阅 mqtt 代理 import sys import paho mqtt client as mqtt def on connect mqttc obj flags rc print rc st
  • Paho MqttAndroidClient.connect 总是失败

    我想从 Android 发布消息service到本地服务器 这是我的代码的一部分 以最简单的形式基于片段here https stackoverflow com questions 24791118 android paho mqtt se
  • Mqtt 客户端如何知道另一个客户端是否已连接

    大家好 我的问题是我需要保持设备 客户端 的状态 因为它们是否在线 我通过客户端 ID 进行连接 通过订阅主题 我可以知道设备已断开连接 但如果它们再次连接 我如何检查它们是否再次连接 简而言之 你不需要 在协议级别 发布者和订阅者完全不知
  • Mosquitto套接字读取错误Arduino客户端

    我刚刚从 Github 下载了最新的 Arduino 库代码 它破坏了我的 MQTT 客户端程序 我在 Arduino 上使用 PubSubClient 1 91 在 Mac OSX 上使用 Mosquitto 1 1 2 Build 20
  • 使用 MQTT Android 服务从飞行模式重新连接

    我正在实现此处找到的 Dale Lane MQTT Android 服务示例http dalelane co uk blog p 1599 http dalelane co uk blog p 1599 这个例子对于我的特定目的来说工作得很
  • 应用程序可以在 Android 和 IOS 模拟器中运行,但在发布后不能运行

    Problem 我创建了一个应用程序 它是 MQTT 代理客户端 当我使用 iOS Android 模拟器进行开发时 我与代理的连接工作正常 但是 当我发布 apk 版本时 我的应用程序无法连接 它有套接字问题 AMQJS0007E 套接字
  • MQTT 客户端订阅 PostgreSQL 数据库更改

    我有一个定期更新的 PostgreSQL 数据库 并且想要将最新更改发布到 mosquitto 代理 执行此方法最优雅的方法是什么 好吧 这个想法很有趣 我正在使用 PostgreSQL 9 5 如果我在控制台中输入 CREATE LANG
  • 在一条消息 MQTT 中发布多个主题

    我有一个设备可以从不同的传感器收集大量数据 我想通过一条消息将它们发送给我的经纪人 在客户端 我只想在给定时间查看其中一些数据 我不想看到全部数据 我可以在一条消息中发布多个主题 然后在客户端只能看到其中的一些主题吗 我知道我可以使用通配符
  • AWS-IoT 核心代理的最大消息负载大小是多少?

    在文档中AWS 服务限制 https docs aws amazon com general latest gr aws service limits htmlIoT Core 服务的有效负载大小限制尚不清楚 既然我们可以将本地 mosqu
  • 如何使用 QtMqtt 和 SSL 执行安全 MQTT?

    我正在尝试使用 QtMQtt 示例项目 simpleclient 但我想执行安全的 MQTT 我该如何处理这个问题 我读过这篇博客 https www qt io blog 2017 08 14 introducing qtmqtt pro
  • 加特林负载测试期间编译错误

    我正在尝试编写一个模拟 并且希望能够运行该模拟 我在尝试 mvn gatling execute 时遇到错误 我的 pom 有以下依赖项
  • 通过 MQTT 将 LoRa 测量结果发送到 Fiware IOT 代理

    我有 LoRa 传感器 它使用 Cayenne LPP 格式有效负载发送测量值 我的网关 LOrank8v1 捕获这些数据包并将其转换为 UDP 网关中有一个服务 lora gateway bridge 它将数据包从 UDP 转换为 TCP

随机推荐