目前,我们有一个通过MQTT控制多个设备的应用程序.每个设备都订阅一个以其设备ID命名的唯一主题.例如,设备A具有设备ID 123,因此它将订阅主题123.然后,如果应用想要将控制消息发布到设备A,则它将发布名为123的主题,这是设备A的设备ID.
通过这样做,如果我们有1000个设备,那么我们将有1000个主题.这是一个非常糟糕的设计.因此,我们可能会考虑通过设置将接收主题的客户端ID将主题发布到特定客户端,因为连接到代理的每个客户端都必须设置客户端ID.但是,我们没有找到任何允许发布到特定客户端的方法.似乎MQTT没有处理这样的事情.它只发布给订阅同一主题的客户.
那么,我们可以采取其他方式来实现一个主题,但仍然能够向特定客户发布消息吗?
谢谢!
har*_*llb 12
无法在MQTT协议级别向单个订户发布消息.
发布/订阅系统的关键租户之一是完全将发布者与订阅者分离,发布者无法知道某个主题是否有任何订阅者,更不用说专门定位.
为每个设备使用主题不是问题,因为它们在每个主题的代理中几乎没有开销.您还可以使用ACL来确保每个客户端只能订阅自己的主题(如果需要,仍然可以发布给其他人)
您可以使用所有客户端订阅的单个主题,并在有效负载中对目标设备进行编码,并让设备决定该消息是否适合自己.不利的一面是您无法将ACL应用于此模型.
| 归档时间: |
|
| 查看次数: |
4915 次 |
| 最近记录: |