佇列參考建議
更新:2007 年 11 月
如果您建立 MessageQueue 元件的執行個體,需指出元件是要與哪個佇列通訊。參考您程式碼中的佇列有以下三種方式:
依路徑 – 到佇列的路徑能夠為您要的佇列辨識電腦和佇列名稱。
依格式名稱 – 這是當應用程式建立或稍後產生佇列時,由 MSMQ 為佇列產生的唯一識別項。
依標籤 – 這是當建立佇列時,佇列系統管理員指派給佇列的可能的非唯一描述名稱。
當您建立新佇列而不是 MessageQueue 元件的新執行個體時,必須使用路徑。格式名稱和標籤是在建立佇列後由訊息佇列系統指派。當您參考程式碼或 [工具箱] 中的現有佇列時,可以選擇想使用的參考方法。您所選擇的方法都會儲存在元件的 Path 屬性 (Property) 中。
使用路徑來參考佇列
佇列路徑會使用表單 servername\queuename。到佇列的路徑都是唯一的。下列資料表將列出每種佇列所使用的路徑資訊:
佇列類型 |
在路徑中使用的語法 |
---|---|
公用佇列 |
MachineName\QueueName |
私用佇列 |
MachineName\Private$\QueueName |
日誌佇列 |
MachineName\QueueName\Journal$ |
電腦日誌佇列 |
MachineName\Journal$ |
電腦無法投遞的信件佇列 |
MachineName\Deadletter$ |
電腦交易的無法投遞信件訊息 |
MachineName\XactDeadletter$ |
您可以為本機電腦名稱使用 ".",如此 "YourMachine\MyQueue" 就等於 ".\MyQueue"。
下列是使用路徑來參考您的佇列時要注意的幾點:
當訊息佇列伺服器上的網域控制器為利用路徑參考的佇列接收作業時,它必須先解析路徑,然後判斷佇列的格式名稱。比起直接利用格式名稱參考佇列,這會使得效能稍慢些。
如果您的元件是設計來當做 XML Web Service 使用,若要達到最大效能,參考佇列時請使用格式名稱方法,而不要使用路徑方法。
如果您要將訊息傳送至中斷連接的佇列,請不要使用路徑來參考佇列。中斷連接的訊息必須使用格式名稱來傳送。
若要擷取佇列的路徑,您可以查詢 MessageQueue 基底類別中的兩個屬性:MachineName 屬性和 QueueName 屬性,然後將傳回結果加以組合。
在程式碼中,利用路徑來參考佇列的語法看起來如下:
MessageQueue1.Path = "YourMachine\MyQueue"
MessageQueue1.Path = @"YourMachine\MyQueue";
![]() |
---|
@".\MyQueue" 語法對 C# 來說就等於使用 ".\\MyQueue"。@ 符號表示常值 (Literal) 字串。如需詳細資訊,請參閱string (C# 參考)。 |
使用格式名稱來參考佇列
格式名稱採用字串的格式來表示佇列屬於公用或是私人,後面接著佇列的產生 GUID 並視需要加上其他識別項。下列資料表將列出每種佇列所使用的路徑資訊:
佇列類型 |
在格式名稱中使用的語法 |
---|---|
公用佇列 |
FORMATNAME:PUBLIC=QueueGUID |
私用佇列 |
FORMATNAME:PRIVATE=MachineGUID\QueueNumber |
日誌佇列 |
FORMATNAME:PUBLIC=QueueGUID;JOURNAL -或- FORMATNAME:PRIVATE=MachineGUID\QueueNumber;JOURNAL |
您不需要將格式名稱指派給佇列,這個值是由佇列管理員在佇列建立時產生的。利用格式名稱參考佇列是存取佇列最直接的方式,因為伺服器上的網域控制器就不需要像在利用路徑參考佇列的情況一般來解譯參考。
下列是利用格式名稱來參考您的佇列時的幾點提示:
如果您要傳送訊息至中斷連接的佇列,您必須利用格式名稱來參考佇列,而非利用路徑,這是因為如果佇列離線的話,就無法取得路徑來解析。
請注意,當您的網路拓撲圖 (Topography) 變更或是當刪除並重新建立佇列時,格式名稱可能會無效。
您可以查詢 MessageQueue 類別中的 FormatName 屬性,來擷取佇列的格式名稱。
在程式碼中,利用格式名稱來參考佇列的語法看起來如下:
MessageQueue1.Path = _
"FORMATNAME:PUBLIC=3d3dc813-c555-4fd3-8ce0-79d5b45e0d75"
MessageQueue1.Path =
"FORMATNAME:PUBLIC=3d3dc813-c555-4fd3-8ce0-79d5b45e0d75";
使用標籤來參考佇列
您也可以利用標籤來參考佇列,這是系統管理員提供給佇列的描述文字標籤。標籤並不一定都是唯一的,因此當您使用標籤來嘗試連接特定佇列時,如果發生名稱衝突的話,您就會收到錯誤。
當您知道要將佇列從一電腦移動至另一電腦時,標籤會相當有用。如果您只利用標籤來參考佇列,您的所有作業將在佇列移動至新位置之後繼續進行,但您必須先確定新電腦上並沒有具有相同標籤的其他佇列。如果有的話,Send 方法將會產生錯誤。
您可以查詢 MessageQueue 類別中的 Label 屬性,來擷取佇列的標籤。
在程式碼中,利用標籤名稱來參考佇列的語法看起來如下:
MessageQueue1.Path = "LABEL:MyQueue"
MessageQueue1.Path = "LABEL:MyQueue";