2015-07-13 8 views
1

Сколько памяти используется всякий раз, когда мы используем от # (подстановочный знак) для подписки на многие темы? например, если у нас есть более 10M тем, вы можете использовать #, чтобы подписаться на все из них, или это вызвало утечку памяти?Использование памяти на подписке MQTT

ответ

2

Эта проблема строго связана с брокером MQTT и реализацией клиента. Конечно, стандартная спецификация MQTT не предоставляет никакой информации об особенностях, связанных с такой реализацией.

Paolo.

1

Продление ответа ppatierno.

Для большинства хорошо разработанных брокеров количество или объем (для дикой карты) подписки не должны действительно изменять объем памяти, используемый в обычных условиях. В большинстве случаев хранилище должно соответствовать строке темы, на которую клиент подписывается, это будет сопоставляться с входящим сообщением, чтобы узнать, должно ли оно быть доставлено.

Если это может не совпадать с постоянными подписками (где чистое значение сеанса не установлено равным true). В этом случае, если клиент отключается, сообщения могут быть поставлены в очередь до повторного подключения. Объем памяти, потребляемой здесь, будет зависеть от количества сообщений и их размера (плюс политика сброса, которую может иметь брокер), а не напрямую от количества подписанных тем.

Чтобы ответить на вторую часть вашего вопроса, подписка на 10 000 000 тем с использованием подстановочного знака вряд ли вызовет утечку памяти, но может очень наводнить клиента в зависимости от того, как часто публикуются сообщения по этим темам.