En Stack Overflow hay una pregunta sobre la implementación de la interacción de solicitud / respuesta a través de MQTT. Como señala una respuesta, puede hacerlo publicando la solicitud sobre un tema y escuchando la respuesta en otro token que se incluyó en la solicitud. Es un poco incómodo, pero funciona.
Como MQTT se usa ampliamente en IoT, me pregunto, ¿ha habido algún intento de estandarizar esta interacción de tipo RPC en aras de la interoperabilidad?
Respuestas:
No conozco ninguno de esos estándares.
Como se señaló en las respuestas a la otra pregunta, pub / sub no se presta a RPC pero puede doblarse para encajar.
Una de las fortalezas de MQTT es que la carga útil puede ser cualquier cosa, lo que permite a un desarrollador tomar la mejor decisión para su proyecto.
fuente
No estoy seguro de cuál es su requisito para el método de comunicación RPC estandarizado a través de MQTT, pero aún hice una pequeña búsqueda y encontré varios puntos para entregarle.
En primer lugar, sobre el método estándar. En un proyecto Github rpc, la descripción lo clava:
El punto es usar el modelo de pila (el modelo OSI es un estándar) y simplemente usar MQTT como una de las capas de la pila.
Este proyecto en json-rpc sobre mqtt utiliza un protocolo estandarizado o al menos conocido sobre MQTT.
Acerca de la incomodidad, no es necesario construir el MQTT y el RPC sobre él desde cero, sino usar una de las bibliotecas vinculadas o alguna otra que se encuentre en Github.
OK, para cada idioma no hay una base lista en Github, pero en ese caso el cumplimiento se convierte en un criterio de planificación y puede afectar a todo el otro proyecto, desafortunadamente.
fuente
Azure IoT Hub tiene un concepto de métodos directos:
Esto se implementa a través de MQTT (AMQP no es compatible), donde
Han incluido esto en su SDK, por lo que los desarrolladores no necesitan preocuparse por monitorear específicamente el tema. Podría implementar un enfoque similar.
Según otras respuestas, pub-sub no se presta a RPC, y no hay ningún estándar, que yo sepa.
Más documentación está aquí .
fuente