2

Java SDK (0.4.1)를 사용하여 SB 큐에서 메시지를 검색 할 때 해당 큐가 비어 있더라도 ReceiveQueueMessageResult이 반환됩니다 . 그 결과에 getValue()을 호출하면 null이 아닌 BrokeredMessage가 리턴됩니다. 빈 대기열에서 수신을 호출했다고 어떻게 말할 수 있습니까? 분명히 크기를 쿼리하는 것은 분산 된 동시 시스템에서 옵션이 아닙니다.Java SDK를 사용하여 빈 Azure ServiceBus 큐에서 수신 할 때 Null이 아닌 메시지 수신

나는 ReceiveAndDelete 모드를 사용 중이며 새로 생성 된 대기열이므로 비어 있습니다.

docs에 따르면 API의 기본 호출은 StatusCode 204를 반환해야합니다. 반환 된 결과 또는 메시지에서 해당 코드에 액세스 할 수있는 방법을 찾을 수 없습니다.

+0

BrokeredMessage에서 DelegateHttpsURLConnection 유형의 익명의 내부 클래스에서 MessageHeaders (응답)를 묻어 버린 응답 헤더를 발견했습니다. 물론 거기에 204가 있습니다. BrokeredMessage의 인터페이스를 통해 얻을 수있는 방법이 없습니다. – WillD

답변

1

이 문제가 기록되어 현재 해결 중입니다. 그런데 Windows Azure SDK for Java는 오픈 소스이므로 MSFT에 대한 저작권을 포기할 의사가있는 경우 직접 수정을 제출할 수도 있습니다. 소스 코드를 찾을 수 있습니다. https://github.com/WindowsAzure/azure-sdk-for-java

+0

이미 프로젝트를 포크했습니다. – WillD

+0

프로젝트를 이미 포크했습니다. 솔루션에 대한 몇 가지 의견. 1) 빈 대기열에 대한 호출. IMO로 인해 ServiceException이 발생하지 않아야합니다. 200 시리즈 상태 코드는 성공적인/올바른 호출을 나타냅니다. 반환 된 204 코드는 큐가 비어 있음을 나타냅니다. 이는 예외 또는 오류 조건이 아닙니다. 2) 현재 구현은 빈 BrokeredMessage를 반환합니다. content-length가 0이면 큐가 비어 있지 않아야합니다. 본문은 없지만 머리글/등록 정보를 통해 의도를 전달하는 유효한 메시지를 작성하는 것이 메시징 시스템에서 일반적입니다. – WillD

+0

픽스를 구현하고 github id : billAtPros에서 풀 요청을 제출했습니다. – WillD