私はAzure Event Hubsを使用していますが、最初にデータを送信してバッチサイズを計算しようとすると、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() を連続して 2 回呼び出すと、同じ例外を簡単に再現できますが、1 回呼び出すと、EventData を正常に送信できません。
Messageの下で使用されている可能性が高く、これはMessage.GetBodyドキュメントとして複数回呼び出された場合に例外をスローするように設定されています。ただし、EventData のメソッドGetBodyStream、GetBody w/serializer、GetBody、またはGetBytesには、この効果に関するドキュメントはありません。
これは文書化するか、修正する必要があると思います。現在、これは別のスレッドで不愉快な驚きであるためです。