共用方式為


HOW TO:在內部交易內傳送訊息

更新:2007 年 11 月

內部交易只需訊息佇列資源,而且完全都是在訊息佇列內,以 MessageQueueTransaction 來處理。可以執行個體化 MessageQueueTransaction 的執行個體來處理交易處理序,並將其傳遞至您選擇來以交易傳送的訊息。

下列方法控制交易處理序:

方法

用於

Begin

指示開始由一或多個訊息和作業組成的交易。

Commit

在交易中所有訊息作業都成功執行的情況下認可交易。

Abort

在錯誤檢查期間復原交易。

注意事項:

佇列中斷連接或已滿並不視為失敗。

在大部分情況下,您的交易程式碼應該括在 Try...Catch...Finally 陳述式 (Visual Basic) (或 try-catch-finally (C# 參考)) 內。這樣您就可在陳述式的 Try 部分指定交易,然後使用 Catch 陳述式,在發生錯誤的情況下發出 Abort 方法。請參閱以下這種模式的範例程式碼。

若要傳送內部交易內的訊息

  1. 建立 MessageQueue 元件的執行個體,並將其 Path 屬性設定為您要參考的佇列。如需詳細資訊,請參閱 HOW TO:建立 MessageQueue 元件執行個體

  2. 建立 MessageQueueTransaction 類別的執行個體來控制交易。

  3. 呼叫 MessageQueueTransaction 類別的 Begin 方法。

  4. 在呼叫 Begin 之後,定義您要傳送的每個訊息。如需詳細資訊,請參閱 HOW TO:建立 MessageQueue 元件執行個體

  5. 在傳送完最後一個訊息之後,呼叫 MessageQueueTransaction 執行個體上的 Commit 以關閉交易。

  6. 將整個交易封閉在 Try...Catch 錯誤檢查程式碼中,以處理所引發的任何錯誤。

  7. 如果您偵測到錯誤,請呼叫 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();
            }
    

請參閱

工作

HOW TO:建立交易佇列

HOW TO:建立 MessageQueue 元件執行個體

概念

交易訊息處理

其他資源

傳送和序列化訊息