MQTT:如何知道 puback 是针对哪条消息的?

2024-03-09

我正在尝试设置一个 MQTT 服务器,它将客户端发送的消息保存到本地数据库中。每条消息都有一个“成功接收”标志,当接收客户端为收到的每条消息(QOS = 1)返回 puback 时,我想翻转该标志。

问题是:

当我发布消息时,服务器正确接收从接收客户端返回的消息。但是,messageId 与发布客户端数据包时的 messageId 不同。我知道这是故意的。但随后我将无法在数据库中找到正确的消息来翻转标志。如果客户端 A 连续向客户端 B 发送 2 条 QOS = 1 的消息怎么办?服务器如何区分返回的 2 个 pubacks?

也许 MQTT 客户端正在做一些神奇的事情来映射我丢失的 messageId?

顺便说一句,我正在使用 mqttjs 和 paho mqttv3。


QoS 1 或 2 的 MQTT PUBLISH 消息需要消息 ID 作为数据包的一部分。消息 id 用于标识 PUBACK(或 QoS 2 的 PUBREC/PUBREL/PUBCOMP)所引用的消息。这是一个重要的功能,因为您可能同时有多个“正在传输”的消息。

您可能忽略的重要一点是,客户之间是完全分开的。这意味着消息 ID 对于客户端(以及消息流方向、代理到客户端或客户端到代理)是唯一的。代理为源自代理的消息生成消息 ID,客户端为源自客户端的消息生成消息 ID;每个方向的消息 ID 都是独立的,因此代理和客户端无需跟踪对方正在做什么。

如果您想跟踪哪些传入消息已发送到所有订阅客户端,则需要跟踪哪些传出消息与传入消息相关,并且仅在收到这些传出消息的所有 PUBACK 后才触发数据库。这将告诉您哪些消息已成功发送到收到消息时订阅的所有客户端。

如果您只想要已发送到代理的所有消息的日志,并且可以假设发送工作正常,那么生活会容易得多。只需在代理主机上创建一个侦听“#”主题或您感兴趣的任何内容的客户端,然后使用客户端 on_message() 回调(或您的库管理它的方式)来处理消息并将其存储在数据库中。

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

MQTT:如何知道 puback 是针对哪条消息的? 的相关文章

  • RabbitMQ MQTT集群方案官方说明

    RabbitMQ MQTT 官方网说明 官方地址 https www rabbitmq com mqtt html 从3 8开始 该MQTT插件要求存在一定数量的群集节点 这意味着三分之二 五分之三 依此类推 该插件也可以在单个节点上使用
  • 教室管理系统(相关技术和设备:stm32、w5500、mqtt)

    背景 某学校对新建的实验楼有门禁管理需求 因此我们项目组借助KOB门锁 某宝销量较高的电吸锁和电插锁品牌 搭建了前端 微信小程序和网页 服务器 java服务器和mqtt服务器 单片机 基于stm32 用于控制电插锁 实现了一套完整的门禁管理
  • .NET使用MQTT通信实例

    最近项目里面需要用到MQTT 刚开始听到这个词一脸茫然 不知道是什么 最后通过自己百度整理一点资料 希望最大家有帮助 在这里需要引用MQTTnet 可在解决方案在右键单击 选择 管理解决方案的 NuGet 程序包 在 浏览 选项卡下面搜索
  • esp8266-12f介绍与使用

    nodemcu 体积相对较大 而且价格也相对较高 这时候 esp12f就可以用来代替 使用 nodemcu v2 v3 使用的是esp12e 与esp12f只有布线上有所差别 是esp8266 12的增强版 esp 12F 引脚图 各个引脚
  • 本地 MQTT mosquitto 实例正在连接 ECONNREFUSED 127.0.0.1:1883

    我正在尝试通过 docker 和 docker compose 运行本地 mosquitto 代理 发布者和订阅者设置 但发布者无法连接到代理 但是 通过 cli 连接到本地代理可以正常工作 运行以下设置时出现以下错误 Error conn
  • Paho MQTT Android 服务问题

    我正在我正在开发的应用程序中实现 Paho MQTT Android 服务 在测试了 Paho 提供的示例应用程序后 我发现有一些我想要更改的内容 https eclipse org paho clients android 一旦应用程序完
  • 使用单连接实例实现 Eclipse MQTT Android 客户端

    我在我的应用程序中使用 Eclipse Paho android mqtt 服务 我能够订阅消息并将消息发布到 mqtt 代理 我的应用程序中有几个活动 当任何活动启动时 它都会使用以下方式连接到代理mqttAndroidClient co
  • 适用于即时消息传递的协议

    我们必须使用合适的协议开发一个用于即时消息传递的本机移动应用程序 我们还将为该应用程序开发一个网站 以便那些无法登录移动设备的人可以通过该网站继续进行即时消息传递 随后 我们将向本机移动应用程序和网站添加语音和视频通话功能 现在我的问题是
  • 使用 MQTT 代理对 ESP8266 Wemos D1 Mini 进行 SSL 证书验证

    我有一个树莓派 3 其操作系统为 raspbianstretch 我已经按照本教程在树莓派上安装并完全配置了 MQTT 代理 https www digitalocean com community tutorials how to ins
  • 适用于 iPhone 的 MQTT 客户端

    我正在尝试遵循这个blog用于为 iPhone 构建推送服务 该博客使用 Android 作为工作平台 但它也可以迁移到 iPhone 前提是我在 Objective C 中获得了 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
  • golang mqtt 发布和订阅

    有谁知道我可以在哪里获得一些在无限循环中发布和订阅的示例 MQTT 客户端 Go golang 代码 我正在与在 MacO 上运行的 Mosquitto 代理进行消息传递 更详细地 从网络获取消息 主题 根据该消息计算一些内容 将计算结果发
  • 通过安全 Websockets 的 MQTT 套接字一分钟后关闭 - RabbitMQ

    我正在通过安全 Websockets 连接到 MQTT RabbitMQ 实例 Angular 6 使用此模块 import Paho from ng2 mqtt mqttws31 它连接成功 但套接字连接似乎在一分钟后关闭 无论 Keep
  • 如何测试“Mosquitto”服务器?

    我是新来的Mosquitto and MQTT 我下载了Mosquitto服务器库 但我不知道如何测试它 有什么办法可以测试一下Mosquitto server 在单独的终端窗口中执行以下操作 启动代理 mosquitto 启动命令行订阅者
  • 如何通过互联网使用 MQTT?

    目前 我正在成功运行一个 mosquitto 代理 订阅主题并与本地网络中的客户端发布消息 如何与位于不同 IP 地址的另一个本地网络进行通信 我应该设置 2 个 mosquitto 经纪人 每个本地网络一个吗 其他本地网络中的 PC 需要
  • 如何使用 MQTT Paho 在 RabbitMQ 队列中订阅

    我正在尝试从我的 Android 应用程序连接到一个名为 消息 的队列 生产者 AMQP 协议下的一种 Web 服务 已连接 可以通过 RabbitMQ 管理面板进行检查 为了从我的 Android 设备进行连接 我正在这样编码 priva
  • 从 Lambda 向 AWS IoT Core 发布 MQTT 消息

    我是 AWS 世界的新手 目前正在开发一项 Alexa 技能 该技能只需向 AWS IoT Core 代理发布一条 mqtt 消息 与之前创建的 事物 和主题进行交互 目前我正在使用 boto3 但我不确定这是正确的路径 这是代码 但在部署
  • 简化情况下能否保证mqtt消息送达顺序?

    如果只有一个代理 一个发布者 一个主题和干净的会话 在这个简化的情况下 能否保证订阅者端的消息传递顺序与发布者端的发送顺序相同 会受到QoS的影响吗 Section 4 6 http docs oasis open org mqtt mqt

随机推荐