【问题标题】:MQTT/PAHO block until clientB has received message from clientAMQTT/PAHO 阻塞,直到客户端收到来自客户端的消息
【发布时间】:2015-09-25 01:33:07
【问题描述】:

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

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

但是,如果我让 clientA 发布了一条发给 clientB 的消息,我该如何阻止,直到 clientB 收到来自代理的消息?

例如:

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

【问题讨论】:

    标签: mqtt paho


    【解决方案1】:

    简短的回答是你没有

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

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

    【讨论】:

    • ...所以我必须自己编写阻塞机制,对吗?
    • 如果你想要端到端阻塞,那么可以,但我很想寻找一个特定的点对点协议,而不是在解耦协议之上强加一些东西
    • 我已经使用“commandId”以及使用相同 ID 回复的消息实现了我自己的。现在这些似乎足够可靠/有效。谢谢。
    猜你喜欢
    • 2020-01-18
    • 1970-01-01
    • 2012-11-02
    • 1970-01-01
    • 2020-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-08
    相关资源
    最近更新 更多