我正嘗試在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>
兩種服務都正常運行。
問題是當郵件被放入毒性隊列時,毒性服務未處理郵件。 我觀察到Poison隊列中的消息,它們只針對原始服務。那麼毒藥服務如何處理它們呢?在通過MSDN之後,我知道通過設置Service behavior屬性,WCF通道會照顧到這個問題。以下paragraoh解釋相同。 「
」有毒消息隊列中的消息是尋址到正在處理該消息的服務的消息,它可能與有毒消息服務端點不同,因此,當有害消息服務從隊列中讀取消息時, WCF通道層發現端點不匹配,並且不發送消息,在這種情況下,消息被髮送到訂單處理服務,但正在被有害消息服務接收,即使消息被尋址,也要繼續接收消息到不同的端點,我們必須添加一個ServiceBehavior來過濾匹配條件與消息所指向的任何服務端點匹配的地址,這是成功處理從有毒消息隊列中讀取的消息所必需的。
但是我的中毒服務沒有處理中毒的信息?
我無法弄清楚這個問題。
嗯,你只能在IIS中託管http綁定。你的意思是嗎? – 2010-05-12 19:36:29