Language

MessageQueue.PeekById メソッド

定義

キューからメッセージを削除せずに、指定したメッセージ識別子を持つメッセージのコピーを返します。

オーバーロード

名前 説明
PeekById(String)

メッセージ識別子が id パラメーターと一致するメッセージをピークします。

PeekById(String, TimeSpan)

メッセージ識別子が id パラメーターと一致するメッセージをピークします。 メッセージがキューに表示されるか、タイムアウトが発生するまで待機します。

PeekById(String)

メッセージ識別子が id パラメーターと一致するメッセージをピークします。

public:
 System::Messaging::Message ^ PeekById(System::String ^ id);
public System.Messaging.Message PeekById(string id);
member this.PeekById : string -> System.Messaging.Message
Public Function PeekById (id As String) As Message

パラメーター

id
String

ピークするメッセージの Id 。

返品

Message プロパティが Id パラメーターと一致するid。

例外

id パラメーターはnull。

指定した id を含むメッセージが存在しません。

メッセージ キュー メソッドにアクセスするときにエラーが発生しました。

例

次のコード例は、 PeekById(String)の使用方法を示しています。


// Connect to a queue on the local computer.
MessageQueue^ queue = gcnew MessageQueue(".\\exampleQueue");

// Create a new message.
Message^ msg = gcnew Message("Example Message Body");

// Send the message.
queue->Send(msg, "Example Message Label");

// Get the message's Id property value.
String^ id = msg->Id;

// Simulate doing other work so the message has time to arrive.
System::Threading::Thread::Sleep(TimeSpan::FromSeconds(10.0));

// Peek at the message.
msg = queue->PeekById(id);

queue->Close();

// Connect to a queue on the local computer.
MessageQueue queue = new MessageQueue(".\\exampleQueue");

// Create a new message.
Message msg = new Message("Example Message Body");

// Send the message.
queue.Send(msg, "Example Message Label");

// Get the message's Id property value.
string id = msg.Id;

// Simulate doing other work so the message has time to arrive.
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(10.0));

// Peek at the message.
msg = queue.PeekById(id);

注釈

PeekById(String)を使用して、既知のメッセージ識別子を持つメッセージをキューから削除せずに読み取ります。 メッセージの識別子はメッセージ キュー エンタープライズ全体で一意であるため、キューには、指定された id パラメーターと一致するメッセージが最大 1 つ存在します。 キューにメッセージが現在含まれていない場合、このオーバーロードは例外をスローします。

キュー内のメッセージをピークするには、 Peek と PeekByCorrelationId(String)の 2 つの方法があります。 Peek メソッドはキュー内の最初のメッセージを返します。PeekByCorrelationId(String)は、キューに送信されたメッセージの結果として作成された受信確認、レポート、またはアプリケーションによって生成された応答メッセージを返します。

次の表は、このメソッドがさまざまなワークグループ モードで使用できるかどうかを示しています。

ワークグループ モード 在庫有り
ローカル コンピューター はい
ローカル コンピューターと直接の形式名 はい
リモート コンピューター いいえ
リモート コンピューターと直接の形式名 はい

こちらもご覧ください

適用対象

PeekById(String, TimeSpan)

メッセージ識別子が id パラメーターと一致するメッセージをピークします。 メッセージがキューに表示されるか、タイムアウトが発生するまで待機します。

public:
 System::Messaging::Message ^ PeekById(System::String ^ id, TimeSpan timeout);
public System.Messaging.Message PeekById(string id, TimeSpan timeout);
member this.PeekById : string * TimeSpan -> System.Messaging.Message
Public Function PeekById (id As String, timeout As TimeSpan) As Message

パラメーター

id
String

ピークするメッセージの Id 。

timeout
TimeSpan

新しいメッセージが検査に使用できるようになるまで待機する時間を示す TimeSpan 。

返品

Message プロパティが Id パラメーターと一致するid。

例外

id パラメーターはnull。

timeout パラメーターに指定された値が無効です。timeoutがZero未満であるか、InfiniteTimeoutより大きい可能性があります。

指定した id を含むメッセージはキューに存在せず、 timeout パラメーターで指定された期間が経過する前に到着しませんでした。

メッセージ キュー メソッドにアクセスするときにエラーが発生しました。

例

次のコード例は、 PeekById(String, TimeSpan)の使用方法を示しています。


// Connect to a queue on the local computer.
MessageQueue^ queue = gcnew MessageQueue(".\\exampleQueue");

// Create a new message.
Message^ msg = gcnew Message("Example Message Body");

// Send the message.
queue->Send(msg, "Example Message Label");

// Get the message's Id property value.
String^ id = msg->Id;

// Peek at the message.
msg = queue->PeekById(id, TimeSpan::FromSeconds(10.0));

queue->Close();

// Connect to a queue on the local computer.
MessageQueue queue = new MessageQueue(".\\exampleQueue");

// Create a new message.
Message msg = new Message("Example Message Body");

// Send the message.
queue.Send(msg, "Example Message Label");

// Get the message's Id property value.
string id = msg.Id;

// Peek at the message.
msg = queue.PeekById(id, TimeSpan.FromSeconds(10.0));

注釈

PeekById(String)を使用して、既知のメッセージ識別子を持つメッセージをキューから削除せずに読み取ります。 メッセージの識別子はメッセージ キュー エンタープライズ全体で一意であるため、キューには、指定された id パラメーターと一致するメッセージが最大 1 つ存在します。 このオーバーロードは、キューに現在メッセージが含まれていない場合に、タイムアウトが発生する前に新しいメッセージが到着しない場合に例外をスローします。

timeout パラメーターは、このメソッドの合計実行時間を指定しません。 代わりに、新しいメッセージがキューに到着するまで待機する時間を指定します。 新しいメッセージが到着するたびに、このメソッドは新しいメッセージの Id を調べて、 id パラメーターと一致するかどうかを確認します。 そうでない場合、このメソッドはタイムアウト期間を開始し、別の新しいメッセージが到着するまで待機します。 そのため、タイムアウト期間内に新しいメッセージが引き続き到着する場合、このメソッドは、タイムアウト期間が切れるまで、新しいメッセージが到着しないか、 Id が id パラメーターと一致するメッセージが到着するまで、無期限に実行を続けることができます。

キュー内のメッセージをピークするには、 Peek と PeekByCorrelationId(String)の 2 つの方法があります。 Peek メソッドはキュー内の最初のメッセージを返します。PeekByCorrelationId(String)は、キューに送信されたメッセージの結果として作成された受信確認、レポート、またはアプリケーションによって生成された応答メッセージを返します。

次の表は、このメソッドがさまざまなワークグループ モードで使用できるかどうかを示しています。

ワークグループ モード 在庫有り
ローカル コンピューター はい
ローカル コンピューターと直接の形式名 はい
リモート コンピューター いいえ
リモート コンピューターと直接の形式名 はい

こちらもご覧ください

適用対象