2011-04-14 7 views
0

우리는 몇 가지 유형의 안정적인 아키텍처를 사용하고 메시징을 사용하기 위해 전환 할 몇 가지 시스템을 원하고 있습니다.호스팅 환경의 MSMQ + WCF

우리는 전화를 걸기 위해 값싼 호스팅 (공유 전용, 비 전용)을 사용할 예정이지만 신뢰할 수있는 호출이 필요합니다. 대상 서버를 사용할 수 없으면 메시지를 몇 번 재 시도해야 실패합니다. 이-할 수 공유 호스팅과

웹 페이지에 액세스가> 사이트가 큐에 요청을 추가> 메시지가 끝점

을 대상으로 전달인가? WCF + MSMQ가 작동하지 않으면 다른 옵션은 무엇입니까?

답변

0

공유 호스트 환경에서 MSMQ (또는 자신을 설치할 수없는 rabbitQ)를 사용할 수있게하려면 호스트에 달려 있습니다.

MSMQ를 통한 WCF는 WCF에서 메시지를 대기열에 쓰고 MSMQ는 대상에 메시지 배달을 처리 한 다음 마치 SOAP를 통해 호출하는 것처럼 메시지로 WCF를 활성화합니다.

결론은 다음과 같습니다. 호스트가 메시지 대기열을 허용하는지 확인해야합니다. 그럴 경우 서버의 다른 사이트에서 액세스 할 수 없도록 보안을 추가해야합니다.

MSMQ 서버에 설치되어 있지 않은 경우 다음 순 MsmqBinding을 사용할 수 없습니다

1

공유 호스트를 호출하기 위해 netMsmqBinding 끝점이있는 WCF 서비스에 대해 Server 2008을 사용할 수있는 경우 MSMQ 4 향상된 실패한 메시지 처리 기능을 이용할 수 있습니다. 특별한 코딩을하지 않으면 서 WCF netMsmqBinding은 실패한 메시지를 자동으로 다시 시도하고 실패한 메시지를 특수 포이즌 큐로 제거하여 서비스가 메시지 처리를 계속할 수 있도록 구성 할 수 있습니다. 공유 호스트에 다시 액세스 할 수있게되면 포이즌 큐의 메시지를 다시 메인으로 이동하여 다시 처리 할 수 ​​있으며이 작업을 자동으로 처리 할 수있는 다른 서비스를 작성할 수 있습니다. This article on MSDN은 MSMQ 기반 WCF 서비스를 설정하고 this article shows how the poison message 처리 작업을 시작하는 데 적합합니다.

+0

내 질문에, 나는 바인딩 net.msmq 사용하여 내 서버에서 WCF 서비스를 사용하고 난에서 호출해야하는 경우 비동기 방식으로 공유 된 호스트 서버의 웹 페이지를 재시도/전달할 것인가? –

+0

인터넷을 통해 HTTP를 사용하여 MSMQ 대기열에 액세스 할 수 있지만 WCF에서 지원하는지 여부는 알 수 없습니다. 오픈 소스 메시지 대기열 프레임 워크 인 RabbitMQ를 살펴볼 수 있습니다. 해당 공유 호스트 서버에서 실행중인 클라이언트에서 지원할 수있는 WCF 바인딩을 사용하는 바인딩이 있습니다. –

+0

RabbitMQ 및 해당 설명서에 대한 링크가 아래에 있습니다. WCF 바인딩을 구성하는 방법에 대한 설명이 꽤 있습니다. 너무 많이 파고 들지는 않았지만 공유 호스트에서 Windows MSMQ 배관을 사용하도록 설정하지 않으면 필요한 것을 제공하는 것 같습니다. RabbitMQ의 전송은 TCP입니다. 공유 호스트는 서비스 IP 주소와 포트에 대한 양방향 호출을 허용해야하며 회사 방화벽에서 해당 포트를 열어야합니다. 링크 : http://www.rabbitmq.com/dotnet.html –