MSMQ全稱MicroSoft Message Queue,微軟消息隊列,是在多個不同的應用之間實現相互通信的一種異步傳輸模式,相互通信的應用可以分佈於同一台機器上,也可以分佈於相連的網絡空間中的任一位置。它的實現原理是:消息的發送者把自己想要發送的信息放入一個容器中(我們稱之為Message),然後把它保存至一個系統公用空間的消息隊列(Message Queue)中;本地或者是異地的消息接收程序再從該隊列中取出發給它的消息進行處理.
其中兩個重要的概念。一個是消息Message ,一個是隊列Queue。
消息Message是由通信的雙方所需要傳遞的信息,它可以是各式各樣的媒體,如文本、聲音、圖象等等。消息最終的理解方式,為消息傳遞的雙方事先商定,這樣做的好處是,一是相當於對數據進行了簡單的加密,二則採用自己定義的格式可以節省通信的傳遞量。消息可以含有發送和接收者的標識,只有指定的用户才能看到回執。時間戳,便於接收方對某些與時間相關的應用進行處理。截止時間,指定時間內消息還未到達則作廢。
隊列的類型主要包括一下幾種:
“公共隊列”在整個“消息隊列”網絡中複製,並且有可能由網絡連接的所有站點訪問。
“專用隊列”不在整個網絡中發佈。相反,它們僅在所駐留的本地計算機上可用。專用隊列只能由知道隊列的完整路徑名或標籤的應用程序訪問。
“管理隊列”包含確認在給定“消息隊列”網絡中發送的消息回執的消息。指定希望 MessageQueue 組件使用的管理隊列(如果有的話)。
“響應隊列”包含目標應用程序接收到消息時返回給發送應用程序的響應消息。指定希望 MessageQueue 組件使用的響應隊列(如果有的話)。
消息隊列Queue是發送和接收消息的公用存儲空間,它可以存在於內存中或者是物理文件中。消息可以以兩種方式發送,即快遞方式(express)和可恢復模式(recoverable),它們的區別在於,快遞方式為了消息放置於內存中,可恢復模式放於物理磁盤上(詳細參見MSDN).
瞭解到消息隊列MSMQ相關的基本概念以後,我們知道它的
優點:穩定、消息優先級、脱機能力以及安全性,有保障的消息傳遞和執行許多業務處理的可靠的防故障機制。
缺點:MSMQ不適合於Client需要Server端實時交互情況.大量請求時候,響應延遲.
優點決定了它的鬆耦合的特性,消息隊列同樣是實現SOA面向對象的架構的方式之一.