【发布时间】:2021-08-30 19:05:46
【问题描述】:
我将 mosquttio 作为 MQTT 代理运行,并且我有多个设备定期发送感官数据。我想收集所有消息并存储它们。我的问题是,拥有多个连接(每个连接都有一个唯一的 id 并订阅主题的子集)是否有任何优势,或者最好让一个连接收集所有数据。
注意:订阅者将与代理在同一台机器上。
【问题讨论】:
我将 mosquttio 作为 MQTT 代理运行,并且我有多个设备定期发送感官数据。我想收集所有消息并存储它们。我的问题是,拥有多个连接(每个连接都有一个唯一的 id 并订阅主题的子集)是否有任何优势,或者最好让一个连接收集所有数据。
注意:订阅者将与代理在同一台机器上。
【问题讨论】:
这可能取决于有问题的消息以及客户端将对这些消息进行什么处理。
只有一个客户端订阅了“#”,这意味着在处理消息时,订阅的主题上只有一个条目来搜索匹配项。但在大多数情况下,这可能是微不足道的开销。
如果消息速率足够高并且存储有任何开销,则使用称为共享订阅的东西允许客户端池全部订阅相同的主题(或通配符)并确保任何消息仅传递到池中的单个客户端。这意味着消息的处理可以在客户端池上进行负载平衡。
使用共享订阅意味着您可以从池中动态添加或删除客户端,而无需跨客户端重新分区主题空间。
【讨论】: