gpt4 book ai didi

mqtt - 如何在 Mosquitto MQTT 中向特定客户端发布消息

转载 作者:行者123 更新时间:2023-12-04 16:58:27 25 4
gpt4 key购买 nike

目前我们有一个通过 MQTT 控制多个设备的应用程序。每个设备订阅一个以设备 ID 命名的唯一主题。例如,设备 A 的设备 ID 为 123,因此它会订阅主题 123。那么如果应用要向设备 A 发布控制消息,那么它会发布一个名为 123 的主题,即设备 A 的设备 ID。

通过这样做,如果我们有 1000 个设备,那么我们将有 1000 个主题。这是一个非常糟糕的设计。所以我们在想,也许我们可以通过设置将接收主题的客户端 ID 向特定客户端发布主题,因为连接到代理的每个客户端都必须设置一个客户端 ID。但是,我们没有找到任何允许发布到特定客户端的方法。而且似乎 MQTT 不处理这样的事情。它只发布给订阅相同主题的客户。

那么,有没有其他方法可以实现一个主题,但仍然能够向特定客户端发布消息?

谢谢!

最佳答案

无法在 MQTT 协议(protocol)级别向单个订阅者发布消息。
发布/订阅系统的关键原则之一是将发布者与订阅者完全分离,发布者无法知道给定主题是否有订阅者,更不用说专门针对某个主题了。
为每个设备使用一个主题不是问题,因为每个主题的代理几乎没有开销。您还可以使用 ACL 来确保每个客户端只能订阅他们自己的主题(同时仍然可以在需要时发布给其他人)
您可以使用所有客户端订阅的单个主题,并在有效负载中对​​目标设备进行编码,并让设备决定消息是否为它自己。这样做的一个缺点是您不能将 ACL 应用于此模型。另一个缺点是网络流量增加,因为无趣的消息将发送给许多订阅者。

关于mqtt - 如何在 Mosquitto MQTT 中向特定客户端发布消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42265001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com