为什么在发送之前不能调用EventData.GetBytes()?

时间:2014-12-02 04:04:03

标签: azure azureservicebus azure-eventhub

我正在使用Azure事件中心,最初在发送数据时尝试计算批量大小我的代码类似于下面的代码EventDataGetBytes

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的方法GetBodyStreamGetBody w/serializerGetBodyGetBytes中没有这方面的文档。

我想这应该被记录下来,或者更正,因为目前在一个单独的线程中这是一个令人不快的意外。

1 个答案:

答案 0 :(得分:3)

您是否尝试使用EventData.SerializedSizeInBytes来获取大小?这是获得批量计算大小的更准确方法。