MQTT订阅上的内存使用情况

MQTT订阅上的内存使用情况,mqtt,iot,messagebroker,Mqtt,Iot,Messagebroker,从#(通配符)到订阅多个主题时,使用了多少内存?例如,如果我们有超过1000万个主题,可以使用#订阅所有主题,或者导致内存泄漏?此问题与MQTT代理和客户端实现密切相关。 当然,MQTT标准规范没有提供与此类实现相关的特性的任何信息 Paolo.此问题与MQTT代理和客户端实现密切相关。 当然,MQTT标准规范没有提供与此类实现相关的特性的任何信息 保罗。延伸帕蒂耶诺的回答 对于大多数设计良好的代理,订阅的数量或范围(对于通配符)在正常情况下不应真正改变所使用的内存量。最多存储应该等于客户端订阅

#(通配符)到订阅多个主题时,使用了多少内存?例如,如果我们有超过1000万个主题,可以使用#订阅所有主题,或者导致内存泄漏?

此问题与MQTT代理和客户端实现密切相关。 当然,MQTT标准规范没有提供与此类实现相关的特性的任何信息


Paolo.

此问题与MQTT代理和客户端实现密切相关。 当然,MQTT标准规范没有提供与此类实现相关的特性的任何信息


保罗。

延伸帕蒂耶诺的回答

对于大多数设计良好的代理,订阅的数量或范围(对于通配符)在正常情况下不应真正改变所使用的内存量。最多存储应该等于客户端订阅的主题字符串,这将与传入消息匹配,以查看是否应该传递

这可能不适用于持久订阅(其中clean session值未设置为true)。在这种情况下,如果客户端断开连接,则消息可能会排队,直到它重新连接。此处消耗的内存量是消息数量及其大小(加上代理可能具有的丢弃策略)的函数,而不是订阅主题数量的函数


要回答问题的第二部分,使用通配符订阅10000000个主题不太可能导致内存泄漏,但它很可能会淹没客户端,具体取决于在这些主题上发布消息的频率。

扩展ppatierno的答案

对于大多数设计良好的代理,订阅的数量或范围(对于通配符)在正常情况下不应真正改变所使用的内存量。最多存储应该等于客户端订阅的主题字符串,这将与传入消息匹配,以查看是否应该传递

这可能不适用于持久订阅(其中clean session值未设置为true)。在这种情况下,如果客户端断开连接,则消息可能会排队,直到它重新连接。此处消耗的内存量是消息数量及其大小(加上代理可能具有的丢弃策略)的函数,而不是订阅主题数量的函数

要回答问题的第二部分,使用通配符订阅10000000个主题不太可能导致内存泄漏,但它很可能会淹没客户端,具体取决于在这些主题上发布消息的频率