HOW TO:在內部交易內傳送訊息
更新:2007 年 11 月
內部交易只需訊息佇列資源,而且完全都是在訊息佇列內,以 MessageQueueTransaction 來處理。可以執行個體化 MessageQueueTransaction 的執行個體來處理交易處理序,並將其傳遞至您選擇來以交易傳送的訊息。
下列方法控制交易處理序:
方法 |
用於 |
---|---|
指示開始由一或多個訊息和作業組成的交易。 |
|
在交易中所有訊息作業都成功執行的情況下認可交易。 |
|
在錯誤檢查期間復原交易。 |
![]() |
---|
佇列中斷連接或已滿並不視為失敗。 |
在大部分情況下,您的交易程式碼應該括在 Try...Catch...Finally 陳述式 (Visual Basic) (或 try-catch-finally (C# 參考)) 內。這樣您就可在陳述式的 Try 部分指定交易,然後使用 Catch 陳述式,在發生錯誤的情況下發出 Abort 方法。請參閱以下這種模式的範例程式碼。
若要傳送內部交易內的訊息
建立 MessageQueue 元件的執行個體,並將其 Path 屬性設定為您要參考的佇列。如需詳細資訊,請參閱 HOW TO:建立 MessageQueue 元件執行個體。
建立 MessageQueueTransaction 類別的執行個體來控制交易。
呼叫 MessageQueueTransaction 類別的 Begin 方法。
在呼叫 Begin 之後,定義您要傳送的每個訊息。如需詳細資訊,請參閱 HOW TO:建立 MessageQueue 元件執行個體。
在傳送完最後一個訊息之後,呼叫 MessageQueueTransaction 執行個體上的 Commit 以關閉交易。
將整個交易封閉在 Try...Catch 錯誤檢查程式碼中,以處理所引發的任何錯誤。
如果您偵測到錯誤,請呼叫 Abort 方法來復原交易。
您的程式碼可能會像這樣子:
Dim transaction As New System.Messaging.MessageQueueTransaction transaction.Begin() Try MessageQueue1.Send("Message1", "Label1", transaction) MessageQueue1.Send("Message2", "Label2", transaction) MessageQueue1.Send("Message3", "Label3", transaction) transaction.Commit() Catch transaction.Abort() End Try
System.Messaging.MessageQueueTransaction transaction = new System.Messaging.MessageQueueTransaction(); transaction.Begin(); try { messageQueue1.Send("Message1", "Label1", transaction); messageQueue1.Send("Message2", "Label2", transaction); messageQueue1.Send("Message3", "Label3", transaction); transaction.Commit(); } catch { transaction.Abort(); }