我正在使用Azure事件中心,最初在发送数据时尝试计算批量大小我的代码类似于下面的代码EventData。GetBytes
EventHubClient client;//initialized before the relevant code
EventData curr = new EventData(data);
//Setting a partition key, and other operations.
long itemLength = curr.GetBytes().LongLength;
client.SendAsync(curr);
不幸的是,我会在SDK代码中收到异常。
无法多次读取邮件正文。要重复使用,请在阅读后存储该值。
虽然删除对GetBytes的最终不必要的调用意味着我可以发送消息,但发生此异常的理由相当令人费解。连续两次调用GetBytes()是重现相同异常的简单方法,但单个调用将意味着无法成功发送EventData。
似乎有可能在Message下使用,如果多次调用Message.GetBody文件,则设置为抛出异常;但是,在EventData的方法GetBodyStream,GetBody w/serializer,GetBody或GetBytes中没有这方面的文档。
我想这应该被记录下来,或者更正,因为目前在一个单独的线程中这是一个令人不快的意外。
答案 0 :(得分:3)
您是否尝试使用EventData.SerializedSizeInBytes来获取大小?这是获得批量计算大小的更准确方法。