次の方法で共有


方法 : 内部トランザクション内でメッセージを送信する

更新 : 2007 年 11 月

内部トランザクションはメッセージ キュー リソースだけを含んでおり、MessageQueueTransaction を使用してメッセージ キュー内から完全に管理されます。トランザクション プロセスを処理するために MessageQueueTransaction のインスタンスを生成し、このインスタンスを、トランザクションとして送信するメッセージに渡します。

トランザクション プロセスを制御するメソッドを次に示します。

メソッド

使用する目的

Begin

1 つ以上のメッセージおよび操作から構成されるトランザクションの開始を示します。

Commit

トランザクションに含まれるすべてのメッセージ操作が正しく実行された場合にトランザクションをコミットします。

Abort

エラー チェック中にトランザクションをロールバックします。

y93c2k87.alert_note(ja-jp,VS.90).gifメモ :

キューが接続されていない場合や、キューに空きがない場合は、失敗とは見なされません。

通常は、トランザクション コードを Try...Catch...Finally ステートメント (Visual Basic) (または try-catch-finally (C# リファレンス)) で囲んで記述します。これにより、ステートメントの Try 部分にトランザクションを指定し、エラーが発生した場合には、Catch ステートメントを使用して Abort メソッドを実行できます。このパターンの例を次のコードに示します。

内部トランザクション内でメッセージを送信するには

  1. MessageQueue コンポーネントのインスタンスを作成し、その Path プロパティに、参照するキューを設定します。詳細については、「方法 : MessageQueue コンポーネントのインスタンスを作成する」を参照してください。

  2. トランザクションを制御する MessageQueueTransaction クラスのインスタンスを作成します。

  3. MessageQueueTransaction クラスの Begin メソッドを呼び出します。

  4. Begin を呼び出した後で、送信する各メッセージを定義します。詳細については、「方法 : 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();
            }
    

参照

処理手順

方法 : トランザクション キューを作成する

方法 : MessageQueue コンポーネントのインスタンスを作成する

概念

トランザクション メッセージ処理

その他の技術情報

メッセージの送信とシリアル化