【问题标题】:Number of subscribers to an MQTT brokers to get all messages获取所有消息的 MQTT 代理的订阅者数量
【发布时间】:2021-08-30 19:05:46
【问题描述】:

我将 mosquttio 作为 MQTT 代理运行,并且我有多个设备定期发送感官数据。我想收集所有消息并存储它们。我的问题是,拥有多个连接(每个连接都有一个唯一的 id 并订阅主题的子集)是否有任何优势,或者最好让一个连接收集所有数据。

注意:订阅者将与代理在同一台机器上。

【问题讨论】:

    标签: mqtt mosquitto


    【解决方案1】:

    这可能取决于有问题的消息以及客户端将对这些消息进行什么处理。

    只有一个客户端订阅了“#”,这意味着在处理消息时,订阅的主题上只有一个条目来搜索匹配项。但在大多数情况下,这可能是微不足道的开销。

    如果消息速率足够高并且存储有任何开销,则使用称为共享订阅的东西允许客户端池全部订阅相同的主题(或通配符)并确保任何消息仅传递到池中的单个客户端。这意味着消息的处理可以在客户端池上进行负载平衡。

    使用共享订阅意味着您可以从池中动态添加或删除客户端,而无需跨客户端重新分区主题空间。

    【讨论】:

    • 谢谢,我不知道共享订阅。我还有一个问题,如果我关心按生成的顺序存储数据,那么使用共享订阅是个好主意吗?在我看来,一个订阅者可以从同一个主题接收 msg_1 和另一个接收 msg_2,但是 msg_2 处理得更快并且插入到 msg_1 之前,实际上打乱了顺序。
    • 一旦你有多个客户端,在后端存储中维护秩序总是一个挑战,MQTT 方面没有什么可以帮助解决这个问题
    猜你喜欢
    • 1970-01-01
    • 2021-12-27
    • 2021-03-04
    • 1970-01-01
    • 1970-01-01
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多