2017-01-19 3 views
0

나는 WindowsAzure.ServiceBus Nuget 패키지 버전 3.4.4SubscriptionClient.GetMessageAsync의 결과가 null 일 수있는 경우는 무엇입니까?

내가 어떤 메시지를 게시하지 않습니다되는 구독에 연결되어있는 SubscriptionClientReceiveAsync 전화와 함께 푸른 서비스 버스 브로커를 사용하고는 반환 작업 완료 1 분 후에 null 결과가 표시됩니다.

나는 어떤 조건에서 null

으로 완료 결코 작업을 예상 할 수 null 완료,이 메소드에 의해 반환되는 작업?

+1

'GetMessageAsync'가 없습니다. 'null '을 반환 할 수있는 이유를 문서 섹션에 포함하는'ReceiveAsync'에 연결했습니다. 그래서 그 질문이 여기에 무엇인지 명확하지 않습니다. –

+0

감사합니다. @Damien_The_Unbeliever 실제로는 ReceiveAsync를 의미하지만, 문서에 null이 표시되지 않습니다. – Martijn

+0

그래도 문서를 약간 잘못 읽었습니다. 자체 설명서에 비동기 수신이라고 표시되어 있습니다. 그러나'Receive'에 대한 문서를 보면'null '을 반환 할 수있는 상황을 문서화합니다. 그럼 2 + 2를 함께 넣어 ... –

답변

0

ReceiveAsync에 TimeSpan을 전달하여 메시지를 기다리는 시간을 지정할 수 있습니다. 기본적으로 이것은 아마도 1 분입니다. 당신은 적어도 하나의 메시지 매 2 주 받으실 경우

그래서 당신이 이런 일을 할 수있는 :

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

0
사용하고있는 API는 메시지 서비스 버스를 폴링 할 것으로 가정

; 이는 메시지를 수락하기 위해 정기적으로 서비스 버스 끝점을 호출해야 함을 의미합니다. 메시지가 없으면 널 응답을 받게됩니다. 해당 시간 동안 단일 요청을 열어두기 때문에 client.ReceiveAsync(TimeSpan.FromDays(14)으로 전화하는 것은 좋지 않습니다. 대신 null 결과가 예상되는 동작이므로 연속 루프에서 ReceiveAsync을 호출해야합니다.

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__

OnMessage

그냥 프로그램의 메인 스레드가 종료하지 않도록 :

그러나,이 루프를 할 것 API도 있습니다.