MSMQ 전송을 사용하여 WCF에서 포이즌 메시지를 처리하려고합니다.WCF MSMQ 4.0의 포이즌 메시지 처리
원본 및 독 서비스를 만들기 위해 아래 링크를 따라갔습니다.
http://msdn.microsoft.com/en-us/library/aa395218.aspx
유일한 차이점은 대신 자체 호스팅, 나는 하나의 호스트 프로젝트와 IIS에서 2 servces를 개최했다.
두 서비스의 구성은 다음과 같습니다.
<services>
<service behaviorConfiguration="MainMSMQWCFService.Service1Behavior"
name="MainMSMQWCFService.OrderProcessorService">
<endpoint address="net.msmq://localhost/private/servicemodelsamplespoison"
binding="netMsmqBinding" bindingConfiguration="PoisonBinding"
contract="MainMSMQWCFService.IOrderProcessor" />
</service>
<service behaviorConfiguration="MainMSMQWCFService.PoisonHandlingServiceBehavior"
name="MainMSMQWCFService.PoisonHandlingService">
<endpoint address="net.msmq://localhost/private/servicemodelsamplespoison;poison"
binding="netMsmqBinding"
bindingConfiguration="PoisonBinding2"
contract="MainMSMQWCFService.IOrderProcessor">
</endpoint>
</service>
</services>
두 서비스가 모두 올바르게 실행되고 있습니다.
메시지가 포이즌 큐에 넣어 졌을 때 포이즌 서비스가 메시지를 처리하지 못하는 것이 문제입니다. 포이즌 큐의 메시지를 보았을 때 원래 서비스로만 타겟팅됩니다. 독약이 어떻게 처리 할 수 있니? MSDN을 살펴본 후 WCF 채널이 서비스 동작 특성을 설정하여이 문제를 처리한다는 것을 알아야합니다. 다음 파라 글라도 똑같이 설명합니다.
"포이즌 메시지 큐의 메시지는 메시지를 처리하는 서비스로, 포이즌 메시지 서비스 끝점과 다를 수 있습니다. 따라서 포이즌 메시지 서비스가 큐에서 메시지를 읽으면 WCF 채널 계층은 끝점의 불일치를 발견하고 메시지를 디스패치하지 않습니다.이 경우 메시지는 주문 처리 서비스로 전달되지만 포이즌 메시지 서비스에서 수신됩니다. 메시지가 처리 된 경우에도 메시지를 계속 수신하려면 다른 끝점으로 보내려면 메시지 기준 주소가 일치하는 주소를 필터링해야하는 ServiceBehavior를 추가해야합니다.이 메시지는 포이즌 메시지 큐에서 읽은 메시지를 성공적으로 처리하는 데 필요합니다. "
하지만 내 독약이 중독 된 메시지를 처리하지 못하고 있습니까?
문제를 파악할 수 없습니다.
흠, IIS에서 http 바인딩 만 호스팅 할 수 있습니다. WAS를 의미합니까? –