从1000台设备中获取connectionState的最佳方法-Azure IoTHub

Ren*_*eph 5 azure azure-eventhub azure-iot-hub azure-iot-sdk azure-iot-edge

connectionState从1000台设备中获取数据的最佳方法。当前没有那么多设备,但是需要有效的解决方案。

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

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

如果以上任何一项我有误,请提出一些建议并纠正我。

Rit*_*Han 2

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

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

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

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

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

  • 您能否展示如何使用 DeviceClient.OperationTimeoutInMilliseconds 实现心跳的示例? (2认同)