azure - IotHubClientTransientException:发生瞬态错误,请重试
问题描述
我在 upboard 上安装了一个 UWP 应用程序,它读取发送到该 deviceID 的 IotHub 消息。
deviceClient = DeviceClient.CreateFromConnectionString(deviceConnectionString, TransportType.Mqtt);
Message receivedMessage = await deviceClient.ReceiveAsync();
该应用程序工作正常并正确读取消息,但有时我有以下例外:
IotHubClientTransientException:发生瞬态错误,请重试。
我读到这些错误可能是由错误的连接字符串产生的,但在我的情况下这是不可能的。
有人能帮我吗?
解决方案
该错误很可能是由网络连接错误引起的。只需添加重试策略。您可以简单地编写自己的代码或使用Polly.Net 之类的库
在分布式世界中,应该会出现连接问题,所以我认为您的代码没有任何问题,除了应该更有弹性。我认为异常甚至告诉您应该重试它真的很好,大多数时候您必须自己弄清楚。
可以在此处找到 Azure 团队的更多指导。在您的情况下,重试模式非常适合:
重试
通过透明地重试以前失败的操作,使应用程序能够在尝试连接到服务或网络资源时处理预期的临时故障。
推荐阅读
- ios - 文本视图的 RxSwift 包装器:shouldInteractWithURL:inRange:interaction:
- scrapy - 我是否正确使用 scrapy-redis 来抓取大量 URL?
- python - pandas groupby & lambda 函数返回 nlargest(2)
- numpy - 排序和排序的复杂性差异?
- c# - 在系统帐户下运行 Windows 10、C# 应用程序以显示完整的子目录和文件树
- wordpress - DevTools 无法加载 SourceMap:无法加载 XXX HTTP 错误的内容:状态代码 404,net::ERR_HTTP_RESPONSE_CODE_FAILURE
- bash - 使用 `less` 延迟分页
- python-3.x - 当检测到重复作者时,如何修复当前数字递增的计数程序?
- embedded-linux - Pocket Beagle 如何将 192.168.7.2 分配给自己,将 192.168.7.1 分配给通过 USB 连接的计算机?
- haskell - 是否可以返回一个依赖于 Maybe 类型值的函数