5

connectionState从 1000 台设备中获取的最佳方式。目前没有那么多设备,但需要一个有效的解决方案。

根据我的理解,目前我可以connectionState使用

  1. IotHubQueries(select * from devices)registryManager.GetDevicesAsync(100);-- 这些方法在查询 1000 台设备时不是实时的,或者在设备数量增加时效率不高。
  2. HeartBeat - 我不喜欢这样,因为当设备数量很大时这会导致配额过载,从而导致发送太多消息。
  3. 操作监控/诊断监控——第一个很好,但它在 2018 年 10 月被弃用,第二个需要大约 2 分钟才能在 eventthub 中收到消息(这个延迟我自己试过并发现了)。

如果我对上述任何一项有误,请提出一些方法并纠正我。

4

1 回答 1

2

ConnectionState 字段仅建议在开发和调试过程中使用,而不是在产品解决方案中使用。

并且有一个检索 connectionState 的限制,因为在单个调用中返回的设备标识的最大数量是 1000

如果您的 IoT 解决方案需要知道设备是否已连接,您应该实施心跳模式

由于考虑到您关心的心跳开销,您可以使用此 API 设置较小的超时:DeviceClient.OperationTimeoutInMilliseconds.

这种模式实现了与使用心跳模式维护设备连接状态注册表相同的结果,同时效率更高。

于 2018-04-20T09:53:26.277 回答