使用NodeMCU板通过MQTT代理订阅多个发布服务器

使用NodeMCU板通过MQTT代理订阅多个发布服务器,mqtt,publish-subscribe,nodemcu,Mqtt,Publish Subscribe,Nodemcu,关于这个话题,我有几个问题,所以我将把它们全部贴在这里,否则我必须就不同的问题单独发表文章。 场景是,我有一个NodeMCU板,我将使用它通过MQTT代理(MQTT盒)从多个发布者接收多条消息。以下是我需要澄清的问题,我还没有实现,我正在形成逻辑。假设我将通过MQTT代理连续接收来自4节点MCU板的消息,然后将其发送到服务器进行存储,问题是 在我可以将其他发布者的消息存储到服务器之前,1发布者的消息是否会覆盖其他发布者的消息 来自MQTT代理的消息是存储在NodeMCU板的ROM还是RAM中

关于这个话题,我有几个问题,所以我将把它们全部贴在这里,否则我必须就不同的问题单独发表文章。 场景是,我有一个NodeMCU板,我将使用它通过MQTT代理(MQTT盒)从多个发布者接收多条消息。以下是我需要澄清的问题,我还没有实现,我正在形成逻辑。假设我将通过MQTT代理连续接收来自4节点MCU板的消息,然后将其发送到服务器进行存储,问题是

  • 在我可以将其他发布者的消息存储到服务器之前,1发布者的消息是否会覆盖其他发布者的消息

  • 来自MQTT代理的消息是存储在NodeMCU板的ROM还是RAM中

  • MQTT代理能否将来自2个发布服务器的数据并发发送到同一个NodeMCU板

这篇文章乱七八糟,很抱歉。

快速回答:

  • 如果两个发布者发布同一主题,则消息将按发布顺序传递给该主题的任何订阅者。所以发布者1的消息将到达,然后是发布者2的消息。由于消息是按顺序接收的,因此不应丢失消息,因为它会被下一条消息中断

  • 到达的消息在传递时将在RAM中

  • 代理只是将消息传递给订阅了某个主题的任何客户机,客户机甚至不知道有多个发布服务器(MQTT消息中没有发布服务器特定的信息),只知道它接收关于该特定主题的多条消息


如果两个出版商发布了两个不同的主题,会怎么样?如果一个nodemcu板订阅了这两个主题,那么在这种情况下会发生什么?它们仍然由代理按顺序交付。如果两个不同的发布者作为两个单独的进程(即使在同一台机器上)运行,则您无法知道调度程序将以什么顺序接收消息(即使它们是发出的)“同时”)因此,你所说的唯一细微差别是,当发布者是不同步的并行进程时,不能保证顺序。它们将按照代理接收到的顺序交付。据我所知,不存在数据丢失的情况,这意味着要保留内存,我所要做的就是调用某种清除函数打开以在最后一个有效负载交付后清除RAM。正确吗?