带有iotedge的isuue发送确认回调

时间:2019-10-15 06:07:24

标签: azure-iot-edge

我正在将遥测数据从iotedge模块发送到Azure云,并且需要确认数据是在云中接收到的。发现我可以使用确认回调。

这是我发送数据的方式:

clientResult = IoTHubModuleClient_LL_SendEventToOutputAsync(iotHubModuleClientHandle, messageInstance->messageHandle, "output1", SendConfirmationCallback_dps, (void *)messageInstance);

这是我的回调函数:

void SendConfirmationCallback_dps(IOTHUB_CLIENT_CONFIRMATION_RESULT result, void* userContextCallback)
{

    printf("Confirmation[%zu] received for message with result = %d\r\n", messageInstance->messageTrackingId, result);
}

**问题: 如果在发送数据时网络不可用,我会收到错误响应吗? 我是否缺少实现我的目标所需的任何东西?我的代码在所有其他方面都运行良好。 **

我的问题: 即使在发送数据时没有网络,确认回调中的'result'变量也等于零(“ IOTHUB_CLIENT_CONFIRMATION_OK”)。

主板规格: C SDK, iotedge V1.0.8, Ubuntu 18.04, ARM32

1 个答案:

答案 0 :(得分:1)

当您将遥测数据从模块发送到IoT中心时,您实际上是在将其发送到Edge Hub,Edge Hub是另一个本地模块,充当IoT Hub的代理并允许客户端继续脱机运行。然后,Edge Hub将尽快将您的数据转发到云上。因此,您看到的成功结果意味着数据已发送到Edge Hub。您的数据将被存储到云中,但是在这种情况下,没有内置的方法可以从云中获取确认回调。