2010-04-07 59 views
2

我需要創建一個服務,它可以在配置的時間間隔內處理排隊的請求。例如,轉到網絡並從網站獲取財務數據,要求我們將請求限制爲每秒一次。我是WCF的新手,我不確定(1)WCF和MSMQ是否適合執行此操作? (2)如果是的話,執行間隔的最佳機制是什麼?一個線程等待?一個計時器(不知道如何工作)。排隊的WCF服務每X秒處理一次

回答

2

WCF中沒有任何內容可以讓你明確地處理它,所以你仍然需要自己完成所有的工作。

儘管您的服務可以處理來自MSMQ的請求,但WCF中的MSMQ偵聽器將盡快選擇並處理消息;你不能將它們配置爲每隔X秒處理一次消息(你可以使用正確的工具來僞造消息,但在我看來,它並不是那麼棒)。

如果處理請求之間的延遲時間不是很短,可以使用一箇中間隊列來保存未決請求。也就是說,無論發送真正的請求,他們都將它們寫入隊列中,而無人直接監聽隊列(隊列A),而WCF服務在不同的隊列(隊列B)上偵聽。然後,有其他的東西(可以像從任務調度程序運行的腳本一樣簡單)每X秒/分鐘/什麼運行一次,並從隊列A移動一個消息到隊列B,從而觸發實際的WCF服務運行。

0

或者您可以使用窗口服務來消費消息。如果您沒有在發佈消息時使用WCF功能,那麼您可能沒有理由首先使用wcf

2

WCF和MSMQ是一個偉大的團隊!絕對值得一試。

WCF沒有提供的部分是「每x秒檢查一次」。這裏最好的辦法是將您的WCF服務託管在Windows NT服務中,並且在NT服務中有一個計時器,每隔x秒檢查一次MSMQ隊列。真的不應該太難實施。美麗之處在於:您可以非常容易地在NT服務中自行託管WCF服務 - 只需幾行代碼,即可完全控制正在發生的事件以及何時發生。有關詳細信息,請參閱How to Host a WCF service in a managed application上的MSDN文檔。

資源: