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

时间:2018-04-17 11:43:43

标签: azure azure-iot-hub azure-eventhub azure-iot-sdk azure-iot-edge

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

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

获取connectionState
  1. IotHub查询(从设备中选择*)或registryManager.GetDevicesAsync(100); - 查询1000个设备时这些方法不是实时的,或者当设备数量增加时效率不高。
  2. HeartBeat - 我不喜欢这个,因为当设备数量很大导致发送过多消息时,这会超出配额。
  3. 操作监控/诊断监控 - 第一个是好的,但它在2018年10月之前被弃用,第二个在eventhub中获取消息大约需要2分钟(这个延迟我已经尝试过并发现了)。
  4. 请提出一些方法,如果我对上述任何方面的错误,请纠正我。

1 个答案:

答案 0 :(得分:2)

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

由于Maximum number of device identities returned in a single call is 1000

,检索connectionState存在限制

如果您的物联网解决方案需要知道设备是否已连接,您应该实施heartbeat pattern

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

  

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