C# IoT边缘SendEventBatchAsync
我目前一直在试验Azure IoT Edge,并试图降低向IoT Hub发送大量遥测数据的成本 起初,我使用C# IoT边缘SendEventBatchAsync,c#,azure-iot-hub,azure-iot-edge,C#,Azure Iot Hub,Azure Iot Edge,我目前一直在试验Azure IoT Edge,并试图降低向IoT Hub发送大量遥测数据的成本 起初,我使用DeviceClient和方法SendEventAsync()发送消息。现在我保存它们并将它们作为单个批次发送 据我所知,这是为了降低IoTHub的吞吐量,降低向IoTHub发送遥测数据的成本。但是,当我查看IoT Hub时,无论是立即发送还是每次保存并每5分钟批量发送,我都会使用相同数量的消息 我已经在网上搜索了一段时间,我不知道我错过了什么 我希望任何人都能在这个问题上帮助我 更多信息
DeviceClient
和方法SendEventAsync()
发送消息。现在我保存它们并将它们作为单个批次发送
据我所知,这是为了降低IoTHub的吞吐量,降低向IoTHub发送遥测数据的成本。但是,当我查看IoT Hub时,无论是立即发送还是每次保存并每5分钟批量发送,我都会使用相同数量的消息
我已经在网上搜索了一段时间,我不知道我错过了什么
我希望任何人都能在这个问题上帮助我
更多信息和我尝试过的东西:
我正在用C语言编写软件。我使用DeviceClient通过使用AMQP的透明网关发送消息。
我尝试过使用MQTT或HTTP1进行批处理,但两者都不起作用。DeviceClient甚至不支持HTTP1。来自:
从设备发送到云的消息的最大消息大小为256 KB。对于付费层,这些消息按4 KB块计量,因此,例如,如果设备通过付费层发送16 KB的消息,则将按4条消息计费
因此,在定价方面使用SendEventAsync()
或SendEventBatchAsync()
似乎并不重要
此外,当涉及到物联网边缘时:叶设备通过哪个协议连接到边缘集线器并不影响边缘集线器连接到物联网集线器的方式。默认情况下,它将使用AMQP,但如果需要,您可以通过上游协议进行更改
如下文评论中所述:
我的理解是,每条消息的4KB最大。此外,较小的消息将被视为每个消息1条。您可以在内部批处理消息,并将多个实际遥测消息放入一个Microsoft.Azure.Devices.Client.Message中。这些应该是物联网枢纽配额所针对的。在有效负载内进行批处理与配额无关我一批发送150条消息,每条消息大约400字节。这应该是60KB左右。但IoTHub仍有150条消息。我的理解是,每条消息的4KB是最大的。此外,较小的消息将被视为每个消息1条。您可以做的是在内部批处理消息,并将多个实际遥测消息放入一个
Microsoft.Azure.Devices.Client.Message
。这些应该是物联网枢纽配额所针对的。你在有效载荷内的批处理方面所做的工作与你就这个问题与微软联系过的报价无关。你所描述的方式就是前进的方向。我使用来自所有邮件的数据增加了单个邮件的有效负载,因此我只发送单个大的Microsoft.Azure.Devices.Client.message
。这被算作单个邮件。流分析可以在无需额外工作的情况下正确查询此数据。谢谢很高兴我能帮忙!我在解决方案中添加了这一评论