2012-07-31 2 views
4

대부분의 대기열 예제를 폴링 메커니즘으로 보았습니다. 대기열의 수신자로 변경할 수 있습니까? 폴링은 작업자의 성능에 영향을 줄 수 있기 때문입니다.청중 대기열에 청취자 작성

+0

"폴링이 작업자의 업무 수행에 영향을 줄 수 있으므로"- 정말요? 폴링을 얼마나 자주 계획합니까? 실행 한 성능 문제에 대해 더 많이 나눌 수 있습니까? – smarx

+0

@smarx는 리소스를 불필요하게 사용하기 때문에 성능에 영향을 미치지 않습니다. 하지만 귀하의 질문은 그 성능이 실행됩니다 유효합니다. 그러나 주목할 점은 대기열과 함께 http 호출을하는 것입니다. – satish

답변

12

Windows Azure 저장소 큐와 Windows Azure 서비스 버스 큐 모두 폴링을 사용하며 알림 기능 자체가 없습니다. 그러나 Windows Azure Service Bus Queues는 긴 폴링을 지원합니다. 긴 폴링은 현재 얻을 수있는 알림 방식과 비슷합니다. MessageReceiver의 Receive 메소드를 사용하면 긴 폴링을 사용하게됩니다 (즉, 메시지를 요청 함). 대기열에 메시지가 없으면 서버는 즉시 응답하지 않고 메시지가 올 때까지 기다립니다 클라이언트에 응답 할 때 또는 대기 시간이 지날 때까지 대기열에 메시지가없는 응답을 반환합니다. Receive 메서드 자체는 동기 호출의 인상을 주어 메시지를 가져오고 반환하지 않습니다 메시지가 나타날 때까지 대기하지만 유휴 시간을 허용하는 과부하가있어 무한 대기 상태가되지 않습니다.

서비스 버스 주제에서는 가입자로 설정할 수 있지만 여전히 메시지를 받기 위해 주제를 폴링 할 것이므로 OP가 요청하는 내용의 중심에 있다고는 생각하지 않습니다.

+0

하지만 우리가 listner를 가지고 있다면 좋을 것입니다. 어떤 생각이라도 MS에서 availble이 연결되면 .else는 연결 버그를 추가 할 수 있습니다. – satish

+0

현재 전체 알림 기능에 대한 요청을 알지 못합니다. – MikeWo

2

Windows Azure 대기열을 사용하는 유일한 방법은 폴링입니다. Service Bus Topics/Subscription을 사용하는 동안 전체 구독자/하위 모델을 보유 할 수 있으며 구독자는 "청취자"가됩니다.

+2

하지만 서비스 버스 주제에 대한 주제를 폴링하여 메시지를 검색 할 것입니다. 구독 모델을 사용하면 단순히 인바운드 큐 메시지에 여러 대상을 추가 할 수 있으며 필터링도 가능합니다. 그러나 결국에는 청취자 (또는 소비자)는 여전히 메시지에 대한 각자의 주제를 폴링합니다. – MikeWo