gpt4 book ai didi

c# - 如何确定 EventData 的序列化大小以进行批处理?

转载 作者:太空宇宙 更新时间:2023-11-03 10:37:12 26 4
gpt4 key购买 nike

在 Azure 文档中 EventHubClienttwo methods对于发送一批数据,它们每个都有下面的注释,并且会抛出 MessageSizeExceededException如果被忽略。

You should ensure that the total serialized size of eventDataList is less than the size limit of one event data transmission, which is 256k by default.

Programming Guide 中存在类似的警告

IEnumerable<EventData> eventDataList的序列化大小如何确定了吗?

传递给每个 EventData 的字节大小很容易确定,假设您不这样做 ask the EventData 。但是,EventData 的序列化形式可能包括 Partition Keyuser propertiessample 中使用的.

data.Properties.Add("Type","Telemetry_" + DateTime.Now.ToLongTimeString());

目前我唯一的选择似乎是在批量大小方面保持保守。

最佳答案

----Nuget更新后更新----这是 EventData 属性 - SerializedSizeInBytes我们在最近的 SDK 迭代中引入了它 - 它解决了这个特定问题 - 在所有 sdk nugets above 2.6 中可用.

---在 EventDataBatch 实用程序之后更新---

使用 EventDataBatch.TryAdd(EventData) API 构建批处理。当 EventData 无法放入批处理中时 - 此 API 将返回 false。停止添加更多事件,然后使用发送方(EventHubClientPartitionSender)发送 EventDataBatch

以下考虑促使我们设计 EventDataBatch API:

  • 帮助开发者使用我们的客户端 API - 处理 EventData 批处理的大小
  • 提取区域范围/基于 SKU 的 MaximumMessageSize 配置:世界各地的 EventHubs 服务可能具有不同的 Max EventData 大小 - 跨不同的EventHub 区域和 EventHub 的不同 SKU。我们希望为开发人员提供一种统一的方式来为任何给定环境构造最大消息大小。因此,当使用 eventHubClient.createBatch() API 初始化 EventDataBatch 时,客户端会与 EventHubs Service 协商 batchSize 并返回可以构造正确大小的 EventDataBatch 实例!

哈!斯雷

关于c# - 如何确定 EventData 的序列化大小以进行批处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27263189/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com