流程如下:
TBGatewayMqttClient中_on_message方法中接收订阅的”v1/gateway/rpc”的主题消息
{'device': 'SN-001', 'data': {'id': 31, 'method': 'rpcCommand', 'params': {'p1': 'v1'}}}
进入gatewayservice回调函数_rpc_request_handler处理,核心的处理流程如下:
- 根据设备得到设备连接器
- 调用设备连接器的server_side_rpc_handler
- 设备连接器的server_side_rpc_handler处理业务流程
- 根据rpc_config配置订阅rpc响应主题
- 根据rpc_config配置发布数据
设备连接器_on_message回调里处理设备端的rpc响应
if self.__gateway.is_rpc_in_progress(message.topic):
self.__gateway.rpc_with_reply_processing(message.topic, content)
return None
说明:设备连接器收到设备的响应数据调用gatewayservice的处理函数进行处理
gatewayservice的rpc_with_reply_processing函数把设备响应消息放到__rpc_processing_queue队列
- gatewayservice的rpc_processing_thread线程从rpc_processing_queue队列中取消息通过tb_client发送给thingsboard