次の方法で共有


方法 : プログラムでメッセージを取得する

更新 : 2007 年 11 月

Receive という同期メソッドを使用して、キューの内容を参照できます。キューに対して Receive メソッドを呼び出すと、システムはキューから最初のメッセージを削除し、そのメッセージを返します。それ以降は、ほかのコンポーネントがキューを参照しても、このメッセージは取得できません。

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

キューの最初のメッセージをキューから削除せずに参照することもできます。詳細については、「方法 : メッセージをピークする」を参照してください。また、メッセージは非同期に取得することもできます。詳細については、「方法 : メッセージを非同期で取得する」を参照してください。

Receive メソッドを呼び出したときにキューにメッセージがない場合、このメソッドは、キューにメッセージが到着するまで待ちます。メソッドが指定された時間だけ待つようにする場合は、タイムアウト期限を指定します。タイムアウト期限は、TimeSpan オブジェクトとして指定されます。

キューからメッセージを読み取る場合は、書式指定ツール オブジェクトを使用して、メッセージを操作するときにメッセージの内容をシリアル化および逆シリアル化します。詳細については、「メッセージの読み取りと取得の概要」を参照してください。

Receive メソッドには、次のような形式があります。

  • 基本メソッド。いくつかのオーバーロードがあり、タイムアウト期限などを指定できます。

  • ReceiveById メソッド。識別子を使用して特定のメッセージを取得できます。

  • ReceiveByCorrelationId メソッド。相関 ID を使用してメッセージを取得できます。

相関 ID の詳細については、「メッセージ キューのジャーナル ストレージ」を参照してください。

プログラムでメッセージを取得するには

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

  2. メッセージを取得するために使用する書式指定ツールを指定します。詳細については、「方法 : 取得したメッセージに対する書式指定ツールを指定する」を参照してください。

  3. 取得したメッセージを保持する Message オブジェクトのインスタンスを作成します。

  4. Receive メソッドを呼び出して、キューからメッセージを削除します。

    k9yhx48a.alert_note(ja-jp,VS.90).gifヒント :

    Receive メソッドのタイムアウトを指定する場合は、TimeSpan オブジェクトを使用して、メソッドが待機する時間の長さを指定します。

    Dim mq As New System.Messaging.MessageQueue(".\MyQueue")
    mq.Send("1", "1")
    Dim m As System.Messaging.Message
    m = mq.Receive(New TimeSpan(0, 0, 3))
    m.Formatter = New _
       System.Messaging.XmlMessageFormatter(New String() _
       {"System.String,mscorlib"})
    Console.WriteLine(m.Body)
    
         System.Messaging.MessageQueue mq =
               new System.Messaging.MessageQueue(".\\MyQueue");
            mq.Send("1", "1");
            System.Messaging.Message m = mq.Receive(new TimeSpan(0, 0, 3));
            m.Formatter = new System.Messaging.XmlMessageFormatter(new string[] { "System.String,mscorlib" });
            Console.WriteLine(m.Body);
    

    このコードの例は、Visual Basic IntelliSense コード スニペットとしても利用できます。コード スニペット ピッカーでは、これは [Windows Operating System] の [Message Queues] にあります。詳細については、「方法 : コードにスニペットを挿入する (Visual Basic)」を参照してください。

参照

処理手順

方法 : メッセージをピークする

方法 : メッセージを非同期で取得する

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

方法 : 取得したメッセージに対する書式指定ツールを指定する

その他の技術情報

メッセージの読み取りと受信