を使用してEventHubにデータを送信すると、ショートバージョン:NullReferenceException
が返されます。なぜ接続が切断されていますか?Azure EventHub - NullReferenceExceptionでEventHubClient.Send()が発生する
長い説明:
私はC#でEventHubClient
クラスからSendBatch
メソッドを使用して、EventHub
にデータを送信しようとしています。 (https://docs.microsoft.com/en-us/dotnet/api/microsoft.servicebus.messaging.eventhubclient)
バッチサイズは100個のjsonオブジェクトであり、大きすぎてはいけません。私は、より大きなバッチサイズと小さなバッチサイズの両方で同じ問題に遭遇しました。私もSend()
を使って、オブジェクトを1つずつ送信しようとしました。同じ結果。
これは時間の偉大な99%に動作しますが、時には、次のスタックトレース残し、NullReferenceException
になり:私は両方 EventHubClient.RetryPolicy = RetryPolicy.Default;
を使用して、手動で実行して、再試行ポリシーを実装しようとした
System.NullReferenceException: Object reference not set to an instance of an object.
at Microsoft.ServiceBus.Messaging.MessageSender.RetrySenderEventDataAsyncResu
lt.<>c.<.ctor>b__5_0(EventData e)
at System.Linq.Enumerable.Any[TSource](IEnumerable`1 source, Func`2 predicate
)
at Microsoft.ServiceBus.Messaging.MessageSender.RetrySenderEventDataAsyncResu
lt..ctor(MessageSender sender, TrackingContext trackingContext, IEnumerable`1 me
ssages, TimeSpan timeout, AsyncCallback callback, Object state)
at Microsoft.ServiceBus.Messaging.MessageSender.BeginSendEventData(TrackingCo
ntext trackingContext, IEnumerable`1 eventDatas, TimeSpan timeout, AsyncCallback
callback, Object state)
at Microsoft.ServiceBus.Messaging.EventHubClient.SendBatch(IEnumerable`1 even
tDataList)
を再接続のために接続時間を与えるために、Thread.Sleep(n)
の再帰的メソッド呼び出し。
時々接続は10秒後、時には60秒後に戻ってくることがあります。通常は決して戻りません(またはメソッドの再帰呼び出しがStackOverflowException
になるまで約30分後ですが、スレッドが置かれる時間睡眠)。論理的には、私はこのシステムの不安定な部分を持つことはできません。
この例外が発生する理由は誰でも知っていますが、それは接続が切断されたためですか?