2017-01-19 7 views
0

私はWindowsAzure.ServiceBus Nugetパッケージのバージョン3.4.4SubscriptionClient.GetMessageAsyncの結果はどのような場合にnullになることがありますか?

私は何もメッセージが発行されていないされているサブスクリプションに接続されているSubscriptionClientReceiveAsyncを呼び出すとAzureのサービスバスブローカーを使用していますが、返されたタスクが完了します1分後にnullという結果が表示されます。

は、私がどのような条件の下でnull

で完成決してタスクを期待することができますnullとの完全な、このメソッドによって返されたタスク?

+1

'GetMessageAsync'はありません。 'ReceiveAsync'にリンクしています。このセクションには、ドキュメントセクションに' null'が返される理由が含まれています。だから、その疑問がここにはっきりしていない。 –

+0

ありがとう@Damien_The_Unbeliever私は確かに 'ReceiveAsync'を意味しましたが、ドキュメントの' null'については何も表示されません – Martijn

+0

これはドキュメントを少し誤って読んでいました。しかし、 'Receive'のドキュメンテーションを見ると、' null'を返すことができる状況が文書化されています。だから2 + 2一緒に... –

答えて

0

ReceiveAsyncにTimeSpanを渡して、メッセージを待つ時間を指定することができます。デフォルトでは、おそらく1分です。

あなたは少なくとも1つのメッセージごとに2週間を受け取ることを期待するのであれば、あなたがこのような何かを行うことができます:あなたが使用している

client.ReceiveAsync(TimeSpan.FromDays(14));

0

APIを使用すると、メッセージに対してサービスバスをポーリングすることを想定しています。メッセージを受け入れるためにサービスバスエンドポイントへの呼び出しを定期的に行う必要があることを意味します。メッセージがない場合は、ヌル応答が返されます。私はclient.ReceiveAsync(TimeSpan.FromDays(14)に電話することをお勧めしません。これはその時間の間、1回のリクエストを開いたままにするためです。代わりに、nullの結果が予想される動作であり、ReceiveAsyncを連続ループで呼び出す必要があります。

しかし、あなたのためこのループを行いますAPIもあります:OnMessage

https://docs.microsoft.com/en-us/dotnet/api/microsoft.servicebus.messaging.subscriptionclient?redirectedfrom=MSDN#Microsoft_ServiceBus_Messaging_SubscriptionClient_OnMessageAsync_System_Func_Microsoft_ServiceBus_Messaging_BrokeredMessage_System_Threading_Tasks_Task__

ちょうどあなたのプログラムのメインスレッドが終了していないことを確認してください。

関連する問題