Чи є стандартизований механізм RPC для MQTT?


10

На переповнюванні стека виникає питання про реалізацію взаємодії запит / відповідь через MQTT. Як зазначається одна відповідь, ви можете це зробити, опублікувавши запит на одну тему і прослухавши відповідь на інший маркер, який був включений у запит. Це трохи незручно, але це працює.

Оскільки MQTT широко використовується в Інтернеті, мені цікаво, чи були спроби стандартизувати цю взаємодію типу RPC задля сумісності?


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

Відповіді:


9

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

Як вказувалося у відповідях на інше питання, паб / підрозділ не піддається RPC, але він може бути схильним підходити.

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


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, і наскільки я не знаю жодних стандартів.

Більше документації тут .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.