簡體   English   中英

WCF服務的隊列實現

[英]Queue implementation for WCF Service

我需要有關WCF服務的隊列設計的建議。 因此,我有一個wcf服務和很多客戶。 客戶端生成消息並將它們放入隊列以供我處理。 服務將它們異步處理,並且客戶端在將消息放入隊列時不需要回調或響應。

我的服務需要從隊列中取出消息以進行多線程處理。 但是,如果我的服務將停止或失敗,或者服務器立即關閉-該服務必須重新處理消息,則不會影響處理。

因此,我考慮了msmq隊列實現。 Msmq讓我排好隊,但是如何實現此要求:重新處理未處理到最后的消息?

也許有人會給我另一個更好的建議。 謝謝你的幫助。

這里的關鍵是承載您的服務的計算機正在運行哪個服務器操作系統。 如果您使用的是Server 2008(或從技術上來說是Vista),則可以利用MSMQ 4自動帶毒消息處理功能。 這會自動將消息從隊列中刪除到特殊的毒害隊列,以便服務可以繼續處理消息。 在MSMQ 3中,您必須在代碼中執行此操作。 MSDN上的這篇文章應該為您提供一個良好的開端,並且本文介紹了有害消息處理代碼。

我看不到您需要擔心對服務代碼進行多線程處理。 如果要獲得高吞吐量,請使用群集的MSMQ服務器和負載平衡的WCF服務,這種方式比嘗試滾動自己的基於MSMQ的多線程代碼更可靠。

因此,最后我選擇了MSMQ中的事務,並將事務對象傳遞給線程以確保與MSMQ一起安全地工作。 非常快。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM