我可以在 iothub 中按分区查看设备列表吗?

Am I able to view a list of devices by partition in iothub?

我有一个集群的 2 个节点从 iothub 接收消息。我按分区划分他们的责任。节点 1 从分区 1、3、5、7、9 和其他分区 2、4、6、8 和 0 读取。最近,我的分区 8 停止响应,直到我停止我的代码并重新启动它。似乎设备正在发送锁定分区的消息。我想要做的是列出分区 8 中的所有设备。这可能吗?是否有云 shell 命令将这些设备放入列表中?

不确定这是否对您有帮助,但您可以在收到的邮件中看到分区。例如,您可以使用 Azure 流分析来查看使用此查询的分区:

Select GetMetadataPropertyValue(IoTHub, '[IoTHub].[ConnectionDeviceId]') as DeviceId, partitionId
from IoTHub

此外,如果您在 VisualStudio 中本地 运行,它会告诉您哪个设备正在发送格式错误的 JSON。例如

[警告] 2021 年 10 月 21 日 9:12:54 上午:用户警告 来源 'IoTHub' 在处理之间出现了 1 次类型 'InputDeserializerError.InvalidData'时间为“2021-10-21T15:12:50.5076449Z”和“2021-10-21T15:12:50.5712076Z”。无法将来自资源 'Partition: [1], Offset: [455266583232], SequenceNumber: [634800], DeviceId: [DeviceName]' 的输入事件反序列化为 Json。一些可能的原因:1) 格式错误的事件 2) 输入源配置的序列化格式不正确

同时检查 ASA 作业中的“Activity 日志”blade。它可能为您提供更多详细信息。