2012-04-10 51 views
0

如何在使用MSMQ WCF客戶端和服務器時設置消息timeToBeRecieved?MSMQ WCF,需要接收的時間

我正在使用msmq服務來管理不可靠目標系統的消息傳遞。消息可能會在幾天內保持未送達狀態。

大部分無效消息都使用下面在服務器綁定中的設置進入毒性隊列。

receiveErrorHandling="Move" 

一些消息在系統死信隊列中而不是毒隊列中結束。有沒有辦法將死信消息配置成與上述相同的隊列?隊列是稱爲隊列的實際消息隊列的子隊列;毒藥。

如何將timeToBeReceived設置爲足夠大的值以使消息最終在毒性隊列中結束?我希望每個消息類型都有一個失敗的隊列,我不想也必須處理死信。

感謝

+1

「我不希望有處理死信爲好。」你應該總是處理死信隊列。即使它是一個線程監視它,所以它不會填滿。 – 2012-04-10 10:49:50

+0

我不想要一個隊列進行消息處理,然後有幾個隊列進行錯誤處理。這對我來說似乎很荒謬。我需要一個消息隊列和一個失敗隊列。也許我應該嘗試nservicebus? – Jim 2012-04-10 14:32:53

+1

MSMQ死信隊列是基本套餐的一部分,因爲它是。爲WCF支持引入的子隊列實際上只是一個過濾器,因爲它們將目標隊列中的消息排序。 – 2012-04-10 16:52:16

回答

1

您可以在配置文件中設置的值綁定:

<bindings> 
    <netMsmqBinding> 
    <binding timeToLive="[define your timespan here]" /> 
    <!-- more configuration --> 
    </netMsmqBinding> 
</bindings> 
... 
+0

這是客戶端還是服務器設置? – Jim 2012-04-10 14:27:15

+0

@Jim:取決於。你應該在那些將發送**消息的地方定義。據我所知,這與傳輸的接收端無關。 – 2012-04-10 14:42:00

+1

接收端不應對消息進行任何更改,因此需要在發送應用程序中設置或作爲發件人的全局設置。 – 2012-04-10 16:47:02