Существует ли стандартизированный механизм RPC для MQTT?

10

В отношении переполнения стека возникает вопрос о реализации взаимодействия запрос / ответ через MQTT. Как отмечается в одном ответе, вы можете сделать это, опубликовав запрос по одной теме и прослушав ответ по другому токену, который был включен в запрос. Это немного неловко, но это работает.

Интересно, поскольку MQTT широко используется в IoT, были ли какие-либо попытки стандартизировать это взаимодействие типа RPC для обеспечения совместимости?

Крис Стейнбах
источник
Просто нашел это, что может быть основой для ответа: esr.net/download/specification/ESR030-LWM2M-MQTT-1.0-A.pdf . По общему признанию не общая спецификация запроса / ответа тесно связана с LWM2M.
Крис Стейнбах

Ответы:

9

Я не знаю ни о каких таких стандартах.

Как указывалось в ответах на другой вопрос, pub / sub не поддается RPC, но его можно согнуть, чтобы соответствовать.

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

hardillb
источник
4

Я не уверен, что вам нужно для стандартизированного метода связи RPC через MQTT, но я все же немного искал и нашел несколько моментов, которые вам нужно донести.

Прежде всего, о стандартном методе. На одном проекте Github rpc описание вида гвоздей это:

Этот модуль предоставляет интерфейс rpc для соединения mqtt, по сути, это стратегия запросов и ответов, в которой в качестве транспорта используется тематическая структура MQTT.

Смысл в том, чтобы использовать модель стека (модель OSI является стандартом) и просто использовать MQTT в качестве одного из уровней стека.

Этот проект на json-rpc через mqtt использует стандартизированный или, по крайней мере, хорошо известный протокол через MQTT.

Что касается неловкости, вам не нужно создавать MQTT и RPC поверх него с нуля, а вместо этого использовать одну из связанных библиотек или какую-либо другую, найденную на Github.

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

Мико
источник
У меня нет реальных требований. Толчком к этому вопросу является сравнение CoAP (в котором определены RFC- механизмы запроса / ответа и pub / sub) с MQTT, который, я уверен, теперь имеет только стандартизированный pub / sub. Конечно, иметь несколько библиотек с открытым исходным кодом для RPC лучше, чем ничего.
Крис Штейнбах
4

Azure IoT Hub имеет концепцию прямых методов:

IoT Hub дает вам возможность вызывать прямые методы на устройствах из облака.

Это реализовано через MQTT (AMQP не поддерживается), где

Устройства получают прямые запросы метода по теме MQTT:

$iothub/methods/POST/{method name}/?$rid={request id}.

Они завернули это в свой SDK, поэтому разработчикам не нужно беспокоиться о конкретном мониторинге темы. Вы могли бы реализовать аналогичный подход.

Что касается других ответов, pub-sub не поддается RPC, и, насколько я знаю, стандартов нет.

Больше документации здесь .

Саймон Манро
источник