訊息佇列和訊息技術背景資料

更新:2007 年 11 月

Microsoft Windows Message Queuing 能夠讓應用程式開發者容易藉由傳送和接收訊息來與應用程式快速且確實的通訊。如果您不熟悉 MessageQueue 技術,此主題將提供您基本詞彙和概念的簡短概觀。

訊息的重要概念

message 指的是在兩電腦之間傳送的資料單位。訊息可以是只由一個文字字串組成的簡單訊息,也可以是包含內嵌物件 (Embedded Object) 的複雜訊息。

訊息會傳送至佇列中。「訊息佇列」指的是一種容器 (Container),用來儲存正在傳送的訊息。訊息佇列管理員就像是將訊息從來源轉接到目的端的中間人。佇列的主要用途是提供路由並保證傳送訊息;如果訊息無法傳送給收件者,則佇列會在訊息傳送成功之前先儲存它。

「訊息佇列」是 Microsoft 訊息技術,提供訊息和訊息佇列功能給任何應用程式。同時,不管已安裝 Microsoft Windows 的任何電腦組合是否位於相同網路或同時在線上,它也都會在這些組合之間提供訊息和功能。

「訊息佇列網路」是能夠彼此之間來回傳送訊息的一組電腦。網路中的每部電腦都扮演不同的角色以確保能夠順利傳送訊息。有些提供路由資訊來決定訊息的傳送方式,有些儲存整個網路的重要資訊,而有些就只傳送和接收訊息。

在訊息佇列安裝時,系統管理員會決定哪些伺服器可彼此通訊並為特定伺服器設定特別的角色。組成這個訊息佇列網路的電腦稱為「站台」,而這些電腦之間是利用「站台連結」彼此連接。每個站台連結都有關聯的「花費」,這是由系統管理員決定,用來表示在其上傳遞訊息的速度。

訊息佇列系統管理員也可以設定網路中一或幾部電腦,來當做「路由伺服器」。路由伺服器會決定如何傳送訊息,方式是查看各個站台連結的耗用並判斷在多個站台之間如何才能最快且又最具效率地傳送訊息。

以下圖片將顯示訊息佇列站台的一般設定以及站台之間如何互動:

站台間的訊息路由

傳閱訊息

秘訣

您不需要在開發期間特別注意訊息路由的詳細資訊,因為系統管理員會為您調整訊息佇列網路,以進行有效率的訊息傳送。

佇列類型

佇列主要可分兩種 — 您或其他網路使用者建立的佇列和系統佇列。使用者建立的佇列可為以下任一佇列:

  • 公用佇列會複寫到整個訊息佇列網路,所有由網路連接的站台都可存取它。

  • 私用佇列不會在整個網路上發行。而是只有在包含這些佇列的本機電腦上才能使用。私用佇列只能由知道佇列完整路徑名稱或標籤 (Label) 的應用程式存取。

  • 系統管理佇列包含的訊息是用來認可接收指定訊息佇列網路內所傳送的訊息。您可以指定要 MessageQueue 元件使用的系統管理佇列,如果有的話。

  • 回應佇列包含的回應訊息會在目的應用程式接收訊息時傳回至傳送應用程式。您可以指定要 MessageQueue 元件使用的回應佇列,如果有的話。

系統產生的佇列通常不出以下幾種類別:

  • 日誌佇列會選擇性地儲存所傳送訊息的複本,以及從佇列移除訊息的複本。每個訊息佇列用戶端上的單一日誌佇列會儲存該電腦所傳送訊息的複本。在伺服器上,則會為個別佇列建立其個別的日誌佇列。這日誌會追蹤從該佇列移除的訊息。

  • 無效信件佇列儲存無法傳遞或過期訊息的複本。如果過期或無法傳遞的訊息是交易訊息,則會將它儲存在稱為「交易無效信件佇列」的特殊無效信件佇列。無法傳遞的信件會儲存在訊息過期時所在的電腦上。如需逾時週期和過期訊息的詳細資料,請參閱預設訊息屬性

  • 報告佇列包含的訊息會指出訊息到其目的端所採取的路徑,這個佇列也可包含測試訊息。每部電腦只能有一個報告佇列。

  • 私用系統佇列是一組私用佇列,用來儲存系統處理訊息動作所需的管理和告知訊息 (Notification Message)。

您在應用程式中所進行的大部分工作將與存取公用佇列及其訊息有關。不過,您很可能會在您的例行作業中使用幾種不同的系統佇列,這就要視您應用程式對日誌記錄、認可及其他特殊處理的需求而定。

同步和非同步通訊

佇列通訊原本就是「非同步的」(Asynchronous),因為將訊息傳送至佇列和從佇列接收訊息是在不同處理序 (Process) 中進行的。此外,您還可以非同步地執行接收作業。想要接收訊息的人員可以對任何指定的佇列呼叫 BeginReceive 方法,然後立即進行其他工作,而不需等待回覆。這與所謂的「同步通訊」非常不同。

在同步通訊中,傳送要求者必須等候接收者回應之後才能執行其他工作。傳送者必須等候多久則端視接收者處理要求和傳送回應所花的時間。

注意事項:

同步或非同步「擷取」資訊與傳送訊息無關。訊息都是非同步「傳送」的。

如需在訊息佇列中進行非同步處理 (Asynchronous Processing) 的詳細資訊,請參閱非同步訊息處理

訊息安全性

您可以利用以下方式來確保您傳送和接收訊息內容的安全性:

  • 您可使用驗證 (Authentication) 來驗證您應用程式接收訊息的來源。

  • 您可使用加密 (Encryption) 來確保您的訊息不會被未經授權的人員讀取或使用。

  • 藉著使用存取控制權限,您可以限制具有 ACL 架構安全性的使用者,以及具有程式碼存取安全性的程式碼傳送訊息至電腦上的特定佇列,或是從其中讀取訊息。

  • 您可使用稽核來記錄哪些使用者嘗試存取訊息佇列物件、嘗試存取的作業類型以及存取成功或失敗。

如需詳細資訊,請參閱訊息佇列安全性

安裝訊息佇列

如果您要在程式碼或 [伺服器總管] 中使用訊息佇列,您必須在開發軟體的電腦上安裝訊息佇列。您可以在您的 Windows 2000 或 Windows NT 文件中找到安裝訊息佇列的說明。當您安裝時,您必須指定您是否要建立新的主要訊息佇列伺服器來當做新網路的集線器、現有網路的獨立用戶端或現有網路的相依用戶端。在多數情況下,您不會建立新網路,但會加入您公司或工作群組的現有訊息佇列網路。

何處讀取背景資訊

本章節的其他頁面將提供您在應用程式中使用訊息佇列元件所需的資訊。如果您需要有關 Visual Studio 或 .NET Framework 內容之外訊息技術的詳細資訊,可以在 MSDN Library 和 Microsoft 網站上找到許多資訊來源:

如需下列資訊

請參閱 Windows 2000 Server 文件中的以下頁面

設定訊息佇列網路

安裝訊息佇列

一般訊息佇列概念

瞭解訊息佇列

微調訊息佇列效能

管理訊息佇列

請參閱

其他資源

使用訊息元件