代码之家  ›  专栏  ›  技术社区  ›  koalo

在Azure IOT C SDK中出现不可恢复的错误后重试

  •  1
  • koalo  · 技术社区  · 6 年前

    根据 this documentation 如果检测到不可恢复的错误,则SDK不会重新尝试重新连接。然而,在 the associated documentation 对于C SDK,没有提到可恢复或不可恢复的错误(或者至少我在那里没有找到)。

    • 如何确定SDK当前是否处于最终可能恢复的状态,或者需要手动重新尝试重新连接的状态?

    • 如果重试策略决定不重新尝试重新连接,是否可以在不破坏设备句柄和创建新句柄的情况下手动重新连接(例如 IoTHubDeviceClient_CreateFromConnectionString )是吗?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Agilarasan anbu Shrishti Gupta    6 年前
    • 这个 C SDK 从重试的角度来看,当前无法区分不可恢复错误和可恢复错误。

    • 所有类型的故障都作为可能恢复的可恢复故障进行处理-因此应修复文档以反映当前功能 2018_11_20 release .

    • 这就是说, SetConnectionStatusCallback 将返回适当的原因代码,这有助于确定是否应允许SDK重试,或者应用程序是否需要建立新的连接。

    • 例如,我会考虑 IOTHUB_CLIENT_CONNECTION_BAD_CREDENTIAL 对于我的应用程序的设备客户端是不可恢复的错误。

    • 您是对的-需要创建新的设备句柄才能手动重新尝试连接。这是因为所有 C SDK APIs 关闭此句柄以查询内部的各种设备客户端状态 iothub_device_client .