Czy istnieje ustandaryzowany mechanizm RPC dla MQTT?

10

Over on Stack Overflow pojawia się pytanie o implementację interakcji żądanie / odpowiedź przez MQTT. Jak zauważa jedna odpowiedź, możesz to zrobić, publikując żądanie na jeden temat i nasłuchując odpowiedzi na innym tokenie, który został zawarty w żądaniu. To trochę niezręczne, ale działa.

Zastanawiam się, skoro MQTT jest szeroko stosowane w całym IoT, czy były jakieś próby standaryzacji interakcji typu RPC ze względu na interoperacyjność?

Chris Steinbach
źródło
Właśnie znalazłem to, co może być podstawą odpowiedzi: esr.net/download/specification/ESR030-LWM2M-MQTT-1.0-A.pdf . Oczywiście nie jest to ogólna specyfikacja zapytania / odpowiedzi ściśle powiązana z LWM2M.
Chris Steinbach,

Odpowiedzi:

9

Nie znam żadnych takich standardów.

Jak wskazano w odpowiedziach na inne pytanie, pub / sub nie nadaje się do RPC, ale można go zgiąć, aby dopasować.

Jedną z mocnych stron MQTT jest to, że ładowność może być dowolna, co pozwala programistom na dokonanie najlepszego wyboru dla ich projektu.

hardillb
źródło
4

Nie jestem pewien, jakie są twoje wymagania dotyczące znormalizowanej metody komunikacji RPC przez MQTT, ale wciąż szukałem i znalazłem kilka punktów do przekazania.

Przede wszystkim o standardowej metodzie. Na jednym projekcie Github RPC opis to gwoździe:

Ten moduł zapewnia interfejs rpc dla połączenia mqtt, w istocie jest to strategia żądania i odpowiedzi, która wykorzystuje strukturę tematu MQTT jako transport.

Chodzi o to, aby użyć modelu stosu (model OSI jest standardem) i po prostu użyć MQTT jako jednej z warstw stosu.

Ten projekt na json-rpc przez mqtt używa standardowego lub co najmniej dobrze znanego protokołu przez MQTT.

Jeśli chodzi o niezręczność, nie musisz budować od podstaw MQTT i RPC, ale zamiast tego użyj jednej z połączonych bibliotek lub innej znalezionej na Github.

OK, dla każdego języka Github nie ma gotowych podstaw, ale w takim przypadku zgodność staje się kryterium planowania i może niestety wpłynąć na cały inny projekt.

mico
źródło
Nie mam prawdziwych wymagań. Impulsem do pytania jest porównanie CoAP (który ma zdefiniowane przez RFC mechanizmy żądania / odpowiedzi i publikacji / sub) do MQTT, co, jestem pewien, teraz ma tylko standaryzowany pub / sub. Z pewnością posiadanie bibliotek Open Source do RPC jest lepsze niż nic.
Chris Steinbach,
4

Azure IoT Hub ma pojęcie metod bezpośrednich:

Centrum IoT daje możliwość wywoływania bezpośrednich metod na urządzeniach z chmury.

Jest to realizowane za pośrednictwem MQTT (AMQP nie jest obsługiwane), gdzie

Urządzenia otrzymują bezpośrednie żądania metod na temat MQTT:

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

Zapakowali to do swojego SDK, więc programiści nie muszą się martwić o monitorowanie tego tematu. Możesz zastosować podobne podejście.

Zgodnie z innymi odpowiedziami pub-sub nie nadaje się do RPC i, o ile mi wiadomo, nie ma żadnych standardów.

Więcej dokumentacji jest tutaj .

Simon Munro
źródło