MQTT/PAHO阻塞,直到clientB收到来自clientA的消息



据我所知,MQTT QOS是关于Client -> Broker交付协议的,即QOS 1和QOS 2可以确保发布的消息被Broker接收。

Paho在此基础上很好地完成了阻塞;mqttClient.publish将阻塞,直到QOS定义的协议完成-在客户端发布和代理之间。

然而,如果我让clientA发布了一条给clientB的消息,我如何阻塞直到clientB从代理接收到消息?

,

ClientB->Subscribe("peer-device/ClientB/application/message")
ClientA->Publish("peer-device/ClientB/application/message")

简短的回答是你不需要

每个客户端绝对不知道是否有任何其他客户端订阅了任何给定的主题,这是设计的。MQTT是发布/订阅协议,而不是点对点协议。Pub/Sub架构的部分意义在于将发布者与订阅者完全分离

MQTT QOS涵盖发布者到代理和代理到订阅者,但作为两个截然不同的步骤。第一个分支确保消息到达代理(对于QOS 1或2),第二个分支确保消息到达任何订阅者。

最新更新