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

Retry after unrecoverable error in Azure IoT C SDK

根据 this documentation, the SDK does not reattempt a re-connection if it detects an unrecoverable error. However, in the associated documentation 对于 C SDK,没有提到可恢复或不可恢复的错误(或者至少我没有在那里找到它)。

  • C SDK目前不区分重试角度的不可恢复错误和可恢复错误。

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

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

  • 例如,我认为 IOTHUB_CLIENT_CONNECTION_BAD_CREDENTIAL 是我应用程序的设备客户端的不可恢复错误。

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