2014-01-16 8 views
1

서비스 버스 메시지 펌프가 어떻게 작동하는지 궁금합니다. 누군가가 나를 가리킬 수있는 좋은 문서가 있는가?Azure 서비스 버스 메시지 펌프

메시지를 대기열로 보내고 콜백 호출을 기다리는 중에 장면 뒤에서 어떤 HTTP 호출도 발생하지 않습니다. 콜백은 어떻게 만들어 지나요? 열려있는 tcp 세션이 있습니까? 이 통신에 어떤 프로토콜이 사용됩니까?

도움이됩니다.

답변

3

서비스 버스 메시지 펌프는 기존의 Receive 작업에 대한 멋진 래퍼 일뿐입니다. 내 이해는 표준 내부 Receive 메서드를 사용하여 대기열에서 메시지를 요청하기 위해 스레드가 회전되도록하는 것입니다. 메시지 펌프가 메시지를 받으면 스레드를 돌려서 OnMessage 대리자 (OnMessageOptions 클래스의 동시 호출 속성 수까지)를 호출합니다.

서비스 버스에 대한 메시지 펌프의 실제 통신은 connectivity mode에 따라 달라집니다. 기본적으로 중개 메시징의 연결 모드는 AutoDetect입니다. 위의 링크 끝 부분에 주석으로 표시되어 있으므로 브로커 메시지는 TCP에서 HTTP로 폴백하지 않으므로 중개 메시징의 경우 TCP로 시작하여 사용자가 명시 적으로 HTTP로 설정하십시오.

HTTP 연결 모드에서 correct ports open이있는 경우 Receive 호출의 요청이 사라지는 것을 볼 수 있으며 긴 폴링이 발생하면 요청이 갱신되었음을 알 수 있습니다. TCP 모드에서 (또는 기본적으로 AutoDetect가 HTTP로 폴백하지 않기 때문에) 포트 9354에서 TCP 연결을 열고이를 양방향 통신에 사용합니다. Process Explorer 나 NetStat와 같은 것을 사용한다면 이것을 볼 수 있습니다.

서비스 버스가 사용하는 독점적 인 프로토콜에 대해서는 실제로 많은 문서가 없습니다. 이들은 다른 포트를 통과하는 개방형 메시징 프로토콜 인 AMQP를 직접 지원합니다. .NET library handles this하지만 MessagingFactoryOptions 개체에 TransportType을 설정하여 MessagingFactory을 만들 때 연결 고리를 통해 전송을 결정합니다.