方法 : プログラムでメッセージを取得する
更新 : 2007 年 11 月
Receive という同期メソッドを使用して、キューの内容を参照できます。キューに対して Receive メソッドを呼び出すと、システムはキューから最初のメッセージを削除し、そのメッセージを返します。それ以降は、ほかのコンポーネントがキューを参照しても、このメッセージは取得できません。
メモ : |
---|
キューの最初のメッセージをキューから削除せずに参照することもできます。詳細については、「方法 : メッセージをピークする」を参照してください。また、メッセージは非同期に取得することもできます。詳細については、「方法 : メッセージを非同期で取得する」を参照してください。 |
Receive メソッドを呼び出したときにキューにメッセージがない場合、このメソッドは、キューにメッセージが到着するまで待ちます。メソッドが指定された時間だけ待つようにする場合は、タイムアウト期限を指定します。タイムアウト期限は、TimeSpan オブジェクトとして指定されます。
キューからメッセージを読み取る場合は、書式指定ツール オブジェクトを使用して、メッセージを操作するときにメッセージの内容をシリアル化および逆シリアル化します。詳細については、「メッセージの読み取りと取得の概要」を参照してください。
Receive メソッドには、次のような形式があります。
基本メソッド。いくつかのオーバーロードがあり、タイムアウト期限などを指定できます。
ReceiveById メソッド。識別子を使用して特定のメッセージを取得できます。
ReceiveByCorrelationId メソッド。相関 ID を使用してメッセージを取得できます。
相関 ID の詳細については、「メッセージ キューのジャーナル ストレージ」を参照してください。
プログラムでメッセージを取得するには
MessageQueue コンポーネントのインスタンスを作成し、その Path プロパティに、参照するキューを設定します。詳細については、「方法 : MessageQueue コンポーネントのインスタンスを作成する」を参照してください。
メッセージを取得するために使用する書式指定ツールを指定します。詳細については、「方法 : 取得したメッセージに対する書式指定ツールを指定する」を参照してください。
取得したメッセージを保持する Message オブジェクトのインスタンスを作成します。
Receive メソッドを呼び出して、キューからメッセージを削除します。
ヒント : 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 コンポーネントのインスタンスを作成する
方法 : 取得したメッセージに対する書式指定ツールを指定する