MQTT是否有标准化的RPC机制?


10

在堆栈溢出上,存在一个有关通过MQTT实现请求/响应交互的问题。作为一个答案,您可以通过在一个主题上发布请求并在请求中包含的另一个令牌上侦听响应来实现。有点尴尬,但可以。

我想知道,由于MQTT在整个IoT中得到了广泛使用,因此是否出于互操作性的目的而进行了任何标准化此RPC类型交互的尝试?


刚刚发现这可能是答案的基础:esr.net/download/specification/ESR030-LWM2M-MQTT-1.0-A.pdf。不可否认,没有将通用的请求/响应规范与LWM2M紧密耦合。
克里斯·斯坦巴赫

Answers:


9

我不知道任何这样的标准。

正如在另一个问题的答案中指出的那样,pub / sub并不适合RPC,但可以随意调整。

MQTT的优势之一是有效负载可以是任何东西,从而使开发人员可以为他们的项目做出最佳选择。


4

我不确定您对MQTT上的标准化RPC通信方法有什么要求,但是我仍然进行了一些搜索,发现有几点可以提供给您。

首先,关于标准方法。在一个Github rpc项目上,描述类型被钉住了:

该模块为mqtt连接提供rpc接口,从本质上讲,这是一种使用MQTT主题结构作为传输的请求和响应策略。

关键是要使用堆栈模型(OSI模型是标准),而仅将MQTT用作堆栈的一层。

这个基于mqtt的json-rpc项目使用了基于MQTT的标准化协议或至少众所周知的协议。

关于笨拙,您不必从头开始构建MQTT和RPC,而可以使用链接库之一或Github上的其他库。

好的,每种语言在Github上都没有现成的基础,但是不幸的是,在这种情况下,合规性成为计划标准,并且可能会影响整个其他项目。


我没有真正的要求。该问题的推动力是将CoAP(具有RFC定义的请求/响应 pub / sub机制)与MQTT进行比较,我可以确定,MQTT现在只有标准化的pub / sub。当然,拥有一些用于RPC的开源库总比没有好。
克里斯·斯坦巴赫

4

Azure IoT中心具有直接方法的概念:

IoT Hub使您能够从云中调用设备上的直接方法。

这是通过MQTT(不支持AMQP)实现的,其中

设备收到有关MQTT主题的直接方法请求:

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

他们将其包装在SDK中,因此开发人员无需担心专门监视该主题。您可以实现类似的方法。

根据其他答案,据我所知,pub-sub并不适合RPC,并且没有任何标准。

更多文档在这里

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.