В спецификации MQTT, почему мы не можем установить «псевдоним» для темы при подписке?

#mqtt #mosquitto

Вопрос:

MQTT v5.0: https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901113

Точно так же, как в «ОПУБЛИКОВАТЬ», мы можем подписаться на одну тему (например, «a/b/c») с псевдонимом «1». И брокер должен хранить карту псевдонима и темы для каждой клиентской сессии. Таким образом, брокер может публиковать сообщения с псевдонимом «1» подписчикам, которые были подписаны на тему «a/b/c». Это сэкономит много ресурсов при передаче. Есть ли какая-то причина, по которой MQTT не реализует эту функцию?

Комментарии:

1. Пожалуйста, предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.

Ответ №1:

Здесь важна формулировка, используемая в спецификации:

Отправитель решает, следует ли использовать псевдоним темы, и выбирает значение.

Вы заметите, что sender используется слово; не client или broker / server . То, как это сформулировано, означает, что брокер может решить использовать псевдоним темы при публикации сообщений клиентам. Это может принести вам те преимущества, которые вы ищете.

Я не знаю ни о каких брокерах, которые делают это в настоящее время, но похоже, что следующая версия Mosquitto будет включать базовую реализацию (документы, проблема).

Поэтому я предполагаю, что ответ на ваш вопрос заключается в том, что спецификация позволяет использовать псевдонимы для сообщений, отправляемых брокером клиенту, но не так, как вы ожидали. Как говорит @romkey, это упрощает задачу, и можно утверждать, что отправителю лучше всего знать, каким темам следует присваивать псевдонимы.

Комментарии:

1. Спасибо! Это отличный способ реализовать псевдоним для подписчиков