全文結構是:
【1】MSMQ基本概念
【2】WCF消息隊列MSMQ的優勢
【3】WCF 消息隊列MSMQ通信框架
【4】安裝配置注意事項
【5】示例代碼
【總結】
【1】MSMQ基本概念:
簡要回顧一下MSMQ的基本概念,詳細的你們可以參考 WCF分佈式開發必備知識(1):MSMQ消息隊列 。
MSMQ全稱MicroSoft Message Queue,微軟消息隊列,是在多個不同的應用之間實現相互通信的一種異步傳輸模式,相互通信的應用可以分佈於同一臺機器上,也可以分佈於相連的網絡空間中的任一位置。它的實現原理是:消息的發送者把自己想要發送的信息放入一個容器中(我們稱之爲Message),然後把它保存至一個系統公用空間的消息隊列(Message Queue)中;本地或者是異地的消息接收程序再從該隊列中取出發給它的消息進行處理。
【2】WCF消息隊列MSMQ的優勢:
消息隊列MSMQ的優點:穩定、消息優先級、脫機能力以及安全性,有保障的消息傳遞和執行許多業務處理的可靠的防故障機制。 因此消息隊列是實現SOA面向服務架構的重要組件之一。WCF框架提供了和MSMQ集成與擴展的能力。這一點也是WCF在特性中明確指出的。MSMQ支持離線消息模式,而且在WCF框架下,提供了基於http橋的internet網絡隊列服務的調用擴展。和MSMQ框架的結合和擴展,使得WCF服務具有的新的特點:
【2.1】Availabiliy:可用性。這個是MSMQ離線消息的一種體現。客戶單和服務端不需要實時進行連接,然後進行消息的交互.WCF 客戶端可以發送請求到離線服務端,服務上線以後在相應客戶端請求。
【2.2】Disjoint:分解。可以講工作分解爲多個操作,一次放入隊列。改善系統的可用性和吞吐量。
【2.3】Compensating:補償。對於多業務事務,可以提供單獨的事物提供其它事務失敗的善後處理。
【2.4】Load Leveling:負載平衡。可以把過載的客戶端請求放入隊列,空閒的時候進行處理,平衡系統的吞吐量,改善性能。
【3】WCF 消息隊列MSMQ通信框架:
WCF使用NetMsmqBinding來支持消息隊列通信。當客戶端調用服務時,客戶端消息會被封裝爲MSMQ消息,發送懂到特定的消息隊列。服務端宿主在運行轉檯下會,啓動通道偵聽器,來檢測消息隊列消息,如果發現對應的消息,會從隊列裏取出消息,使用分發器轉發給對應的服務。具體的通信架構如圖: