MessageQueue.ReceiveById MessageQueue.ReceiveById MessageQueue.ReceiveById MessageQueue.ReceiveById Method

定義

指定した ID と一致するメッセージを受信し、キューから削除します。Receives the message that matches the given identifier, removing it from the queue.

オーバーロード

ReceiveById(String) ReceiveById(String) ReceiveById(String) ReceiveById(String)

指定した ID と一致するメッセージを非トランザクション キューから受信します。現在、指定した ID と一致するメッセージがキューに存在しない場合は、すぐに例外を発生させます。Receives the message that matches the given identifier from a non-transactional queue and immediately raises an exception if no message with the specified identifier currently exists in the queue.

ReceiveById(String, MessageQueueTransaction) ReceiveById(String, MessageQueueTransaction) ReceiveById(String, MessageQueueTransaction) ReceiveById(String, MessageQueueTransaction)

指定した ID と一致するメッセージを (トランザクション キューから) 受信します。現在、指定した ID と一致するメッセージがキューに存在しない場合は、すぐに例外を発生させます。Receives the message that matches the given identifier (from a transactional queue) and immediately raises an exception if no message with the specified identifier currently exists in the queue.

ReceiveById(String, MessageQueueTransactionType) ReceiveById(String, MessageQueueTransactionType) ReceiveById(String, MessageQueueTransactionType) ReceiveById(String, MessageQueueTransactionType)

指定した ID と一致するメッセージを受信します。現在、指定した ID と一致するメッセージがキューに存在しない場合は、すぐに例外を発生させます。Receives the message that matches the given identifier and immediately raises an exception if no message with the specified identifier currently exists in the queue.

ReceiveById(String, TimeSpan) ReceiveById(String, TimeSpan) ReceiveById(String, TimeSpan) ReceiveById(String, TimeSpan)

指定した ID と一致するメッセージを (非トランザクション キューから) 受信します。指定した ID のメッセージがキューで利用可能になるか、タイムアウトの時間が経過するまで待機します。Receives the message that matches the given identifier (from a non-transactional queue) and waits until either a message with the specified identifier is available in the queue or the time-out expires.

ReceiveById(String, TimeSpan, MessageQueueTransaction) ReceiveById(String, TimeSpan, MessageQueueTransaction) ReceiveById(String, TimeSpan, MessageQueueTransaction) ReceiveById(String, TimeSpan, MessageQueueTransaction)

指定した ID と一致するメッセージを (トランザクション キューから) 受信します。指定した ID のメッセージがキューで利用可能になるか、タイムアウトの時間が経過するまで待機します。Receives the message that matches the given identifier (from a transactional queue) and waits until either a message with the specified identifier is available in the queue or the time-out expires.

ReceiveById(String, TimeSpan, MessageQueueTransactionType) ReceiveById(String, TimeSpan, MessageQueueTransactionType) ReceiveById(String, TimeSpan, MessageQueueTransactionType) ReceiveById(String, TimeSpan, MessageQueueTransactionType)

指定した ID と一致するメッセージを受信します。指定した ID のメッセージがキューで利用可能になるか、タイムアウトの時間が経過するまで待機します。Receives the message that matches the given identifier and waits until either a message with the specified identifier is available in the queue or the time-out expires.

ReceiveById(String) ReceiveById(String) ReceiveById(String) ReceiveById(String)

指定した ID と一致するメッセージを非トランザクション キューから受信します。現在、指定した ID と一致するメッセージがキューに存在しない場合は、すぐに例外を発生させます。Receives the message that matches the given identifier from a non-transactional queue and immediately raises an exception if no message with the specified identifier currently exists in the queue.

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

パラメーター

id
String String String String

受信するメッセージの IdThe Id of the message to receive.

戻り値

渡された id パラメーターと一致する Id プロパティを持つ MessageThe Message whose Id property matches the id parameter passed in.

例外

id パラメーターが null です。The id parameter is null.

指定した id を持つメッセージは見つかりませんでした。The message with the specified id could not be found.

メッセージ キューのメソッドにアクセスしたときにエラーが発生しました。An error occurred when accessing a Message Queuing method.

次のコード例は、ReceiveById(String) の使用方法を示します。The following code example demonstrates the use of ReceiveById(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));

// Receive the message from the queue.
msg = queue->ReceiveById(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));

// Receive the message from the queue.
msg = queue.ReceiveById(id);

注釈

既知の識別子を持つメッセージを読み取り、キューから削除するには、このメソッドを使用します。Use this method to read a message with a known identifier and remove it from the queue. このメソッドは、キューにメッセージがない場合は、すぐに例外をスローします。This method throws an exception immediately if the message is not in the queue.

Idがあるため最大で 1 つのメッセージと一致するキューでメッセージのプロパティがメッセージ キュー エンタープライズ全体で一意では、指定されたidパラメーター。The Id property of a message is unique across the Message Queuing enterprise, so there will be at most one message in the queue that matches the given id parameter.

その他の 2 つのメソッドを使用すると、キューからメッセージを受信できます。Two other methods allow you to receive messages from a queue. Receiveメソッドは、キュー内の最初のメッセージを返します、ReceiveByCorrelationId(String)メソッドの使用を受信確認、レポート、またはキューに送信されるメッセージの結果として作成されたアプリケーションによって生成される応答メッセージを取得します。The Receive method returns the first message in the queue, and the ReceiveByCorrelationId(String) method is used to retrieve an acknowledgment, report, or application-generated response message that was created as a result of a message sent to the queue.

キューから削除せずには、指定した識別子を持つメッセージを読み取り、使用、PeekById(String)メソッド。To read a message with a specified identifier without removing it from the queue, use the PeekById(String) method. PeekById(String)メソッドがメソッドに対する後続の呼び出しより高い優先度のメッセージがキューに到着しない限り、同じメッセージが返されるように、キューで最初のメッセージが常を返します。The PeekById(String) method always returns the first message in the queue, so subsequent calls to the method return the same message unless a higher priority message arrives in the queue.

次の表では、このメソッドは、さまざまなワークグループ モードで使用するかどうかを示します。The following table shows whether this method is available in various Workgroup modes.

ワークグループ モードWorkgroup mode 使用可能Available
ローカル コンピューターLocal computer はいYes
ローカル コンピューターと直接形式名Local computer and direct format name はいYes
リモート コンピューターRemote computer いいえNo
リモート コンピューターと直接形式名Remote computer and direct format name はいYes
こちらもご覧ください

ReceiveById(String, MessageQueueTransaction) ReceiveById(String, MessageQueueTransaction) ReceiveById(String, MessageQueueTransaction) ReceiveById(String, MessageQueueTransaction)

指定した ID と一致するメッセージを (トランザクション キューから) 受信します。現在、指定した ID と一致するメッセージがキューに存在しない場合は、すぐに例外を発生させます。Receives the message that matches the given identifier (from a transactional queue) and immediately raises an exception if no message with the specified identifier currently exists in the queue.

public:
 System::Messaging::Message ^ ReceiveById(System::String ^ id, System::Messaging::MessageQueueTransaction ^ transaction);
public System.Messaging.Message ReceiveById (string id, System.Messaging.MessageQueueTransaction transaction);
member this.ReceiveById : string * System.Messaging.MessageQueueTransaction -> System.Messaging.Message
Public Function ReceiveById (id As String, transaction As MessageQueueTransaction) As Message

パラメーター

id
String String String String

受信するメッセージの IdThe Id of the message to receive.

戻り値

渡された id パラメーターと一致する Id プロパティを持つ MessageThe Message whose Id property matches the id parameter passed in.

例外

id パラメーターが null です。The id parameter is null.

または-or- transaction パラメーターが null です。The transaction parameter is null.

指定した id を持つメッセージは見つかりませんでした。The message with the specified id could not be found.

キューが非トランザクション キューです。The queue is non-transactional.

または-or-

メッセージ キューのメソッドにアクセスしたときにエラーが発生しました。An error occurred when accessing a Message Queuing method.

次のコード例は、ReceiveById(String, MessageQueueTransaction) の使用方法を示します。The following code example demonstrates the use of ReceiveById(String, MessageQueueTransaction).


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

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

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

// 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));

// Create a message queuing transaction.
MessageQueueTransaction^ transaction = gcnew MessageQueueTransaction();

try
{
    // Begin a transaction.
    transaction->Begin();

    // Receive the message from the queue.
    msg = queue->ReceiveById(id, transaction);

    // Commit the transaction.
    transaction->Commit();
}
catch (Exception^ ex)
{
    // Cancel the transaction.
    transaction->Abort();

    // Propagate the exception.
    throw ex;
}
finally
{
    // Dispose of the transaction object.
    delete transaction;
    queue->Close();
}


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

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

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

// 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));

// Create a message queuing transaction.
MessageQueueTransaction transaction = new MessageQueueTransaction();

try
{
    // Begin a transaction.
    transaction.Begin();

    // Receive the message from the queue.
    msg = queue.ReceiveById(id, transaction);

    // Commit the transaction.
    transaction.Commit();
}
catch(System.Exception e)
{
    // Cancel the transaction.
    transaction.Abort();

    // Propagate the exception.
    throw e;
}
finally
{
    // Dispose of the transaction object.
    transaction.Dispose();
}

注釈

このメソッドを使用して、既知の識別子を持つメッセージを読み取り、によって定義された内部トランザクション コンテキストを使用して、キューから削除する、transactionパラメーター。Use this method to read a message with a known identifier and remove it from the queue, using the internal transaction context defined by the transaction parameter. このメソッド例外をスローすぐにキューにメッセージがない場合This method throws an exception immediately if the message is not in the queue

Idがあるため最大で 1 つのメッセージと一致するキューでメッセージのプロパティがメッセージ キュー エンタープライズ全体で一意では、指定されたidパラメーター。The Id property of a message is unique across the Message Queuing enterprise, so there will be at most one message in the queue that matches the given id parameter.

トランザクション キューでこのメソッドを呼び出したため、受信したメッセージが返されます、キューにトランザクションが中止された場合。Because this method is called on a transactional queue, the message that is received would be returned to the queue if the transaction is aborted. メッセージは完全に削除されません、キューから、トランザクションがコミットされるまで。The message is not permanently removed from the queue until the transaction is committed.

その他の 2 つのメソッドを使用すると、キューからメッセージを受信できます。Two other methods allow you to receive messages from a queue. Receiveメソッドは、キュー内の最初のメッセージを返します、ReceiveByCorrelationId(String)メソッドの使用を受信確認、レポート、またはキューに送信されるメッセージの結果として作成されたアプリケーションによって生成される応答メッセージを取得します。The Receive method returns the first message in the queue, and the ReceiveByCorrelationId(String) method is used to retrieve an acknowledgment, report, or application-generated response message that was created as a result of a message sent to the queue.

キューから削除せずには、指定した識別子を持つメッセージを読み取り、使用、PeekById(String)メソッド。To read a message with a specified identifier without removing it from the queue, use the PeekById(String) method. PeekById(String)メソッドがメソッドに対する後続の呼び出しより高い優先度のメッセージがキューに到着しない限り、同じメッセージが返されるように、キューで最初のメッセージが常を返します。The PeekById(String) method always returns the first message in the queue, so subsequent calls to the method return the same message unless a higher priority message arrives in the queue. 呼び出しによって返されるメッセージに関連付けられたトランザクション コンテキストがないPeekById(String)します。There is no transaction context associated with a message returned by a call to PeekById(String). PeekById(String)キューにメッセージは削除されませんがあるトランザクションが中止された場合はロールバックするものがありません。Because PeekById(String) does not remove any messages in the queue, there would be nothing to roll back if the transaction were aborted.

次の表では、このメソッドは、さまざまなワークグループ モードで使用するかどうかを示します。The following table shows whether this method is available in various Workgroup modes.

ワークグループ モードWorkgroup mode 使用可能Available
ローカル コンピューターLocal computer はいYes
ローカル コンピューターと直接形式名Local computer and direct format name はいYes
リモート コンピューターRemote computer いいえNo
リモート コンピューターと直接形式名Remote computer and direct format name はいYes
こちらもご覧ください

ReceiveById(String, MessageQueueTransactionType) ReceiveById(String, MessageQueueTransactionType) ReceiveById(String, MessageQueueTransactionType) ReceiveById(String, MessageQueueTransactionType)

指定した ID と一致するメッセージを受信します。現在、指定した ID と一致するメッセージがキューに存在しない場合は、すぐに例外を発生させます。Receives the message that matches the given identifier and immediately raises an exception if no message with the specified identifier currently exists in the queue.

public:
 System::Messaging::Message ^ ReceiveById(System::String ^ id, System::Messaging::MessageQueueTransactionType transactionType);
public System.Messaging.Message ReceiveById (string id, System.Messaging.MessageQueueTransactionType transactionType);
member this.ReceiveById : string * System.Messaging.MessageQueueTransactionType -> System.Messaging.Message
Public Function ReceiveById (id As String, transactionType As MessageQueueTransactionType) As Message

パラメーター

id
String String String String

受信するメッセージの IdThe Id of the message to receive.

transactionType
MessageQueueTransactionType MessageQueueTransactionType MessageQueueTransactionType MessageQueueTransactionType

メッセージと関連付けるトランザクション コンテキストの種類を示す、MessageQueueTransactionType 値の 1 つ。One of the MessageQueueTransactionType values, describing the type of transaction context to associate with the message.

戻り値

渡された id パラメーターと一致する Id プロパティを持つ MessageThe Message whose Id property matches the id parameter passed in.

例外

id パラメーターが null です。The id parameter is null.

指定した id を持つメッセージは見つかりませんでした。The message with the specified id could not be found.

transactionType パラメーターが、MessageQueueTransactionType メンバーの 1 つではありません。The transactionType parameter is not one of the MessageQueueTransactionType members.

メッセージ キューのメソッドにアクセスしたときにエラーが発生しました。An error occurred when accessing a Message Queuing method.

次のコード例は、ReceiveById(String, MessageQueueTransactionType) の使用方法を示します。The following code example demonstrates the use of ReceiveById(String, MessageQueueTransactionType).


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

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

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

// 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));

// Receive the message from the queue.
msg = queue->ReceiveById(id, MessageQueueTransactionType::Single);

queue->Close();


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

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

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

// 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));

// Receive the message from the queue.
msg = queue.ReceiveById(id, MessageQueueTransactionType.Single);

注釈

既知の識別子を持つメッセージを読み取り、キューから削除するには、このメソッドを使用します。Use this method to read a message with a known identifier and remove it from the queue. このメソッドは、キューにメッセージがない場合は、すぐに例外をスローします。This method throws an exception immediately if the message is not in the queue. メッセージがそれ以外の場合、キューから削除し、で定義されたトランザクションのコンテキストを使用してアプリケーションに返される、transactionTypeパラメーター。Otherwise, the message is removed from the queue and returned to the application using a transaction context defined by the transactionType parameter.

指定AutomatictransactionType外部トランザクション コンテキストが既に存在する場合は、パラメーターを使用してメッセージを受信する必要のあるスレッドにアタッチされています。Specify Automatic for the transactionType parameter if there is already an external transaction context attached to the thread that you want to use to receive the message. 指定Singleとして 1 つの内部トランザクション メッセージを受信したい場合。Specify Single if you want to receive the message as a single internal transaction. 指定できるNoneトランザクション コンテキストの外でトランザクション キューからメッセージを受信する場合。You can specify None if you want to receive a message from a transactional queue outside of a transaction context.

Idがあるため最大で 1 つのメッセージと一致するキューでメッセージのプロパティがメッセージ キュー エンタープライズ全体で一意では、指定されたidパラメーター。The Id property of a message is unique across the Message Queuing enterprise, so there will be at most one message in the queue that matches the given id parameter. 指定した識別子を持つメッセージが関連付けられているもの以外のキューの場合MessageQueueインスタンス、メッセージが見つかりません。If the message with the specified identifier is in a queue other than the one associated with this MessageQueue instance, the message will not be found.

トランザクション キューからメッセージを受信するこのメソッドが呼び出されると、受信したメッセージが返されます、キューにトランザクションが中止された場合。If this method is called to receive a message from a transactional queue, the message that is received would be returned to the queue if the transaction is aborted. メッセージは完全に削除されません、キューから、トランザクションがコミットされるまで。The message is not permanently removed from the queue until the transaction is committed.

その他の 2 つのメソッドを使用すると、キューからメッセージを受信できます。Two other methods allow you to receive messages from a queue. Receiveメソッドは、キュー内の最初のメッセージを返します、ReceiveByCorrelationId(String)メソッドの使用を受信確認、レポート、またはキューに送信されるメッセージの結果として作成されたアプリケーションによって生成される応答メッセージを取得します。The Receive method returns the first message in the queue, and the ReceiveByCorrelationId(String) method is used to retrieve an acknowledgment, report, or application-generated response message that was created as a result of a message sent to the queue.

キューから削除せずには、指定した識別子を持つメッセージを読み取り、使用、PeekById(String)メソッド。To read a message with a specified identifier without removing it from the queue, use the PeekById(String) method. PeekById(String)メソッドがメソッドに対する後続の呼び出しより高い優先度のメッセージがキューに到着しない限り、同じメッセージが返されるように、キューで最初のメッセージが常を返します。The PeekById(String) method always returns the first message in the queue, so subsequent calls to the method return the same message unless a higher priority message arrives in the queue. 呼び出しによって返されるメッセージに関連付けられたトランザクション コンテキストがないPeekById(String)します。There is no transaction context associated with a message returned by a call to PeekById(String). PeekById(String)キューにメッセージは削除されませんがあるトランザクションが中止された場合はロールバックするものがありません。Because PeekById(String) does not remove any messages in the queue, there would be nothing to roll back if the transaction were aborted.

次の表では、このメソッドは、さまざまなワークグループ モードで使用するかどうかを示します。The following table shows whether this method is available in various Workgroup modes.

ワークグループ モードWorkgroup mode 使用可能Available
ローカル コンピューターLocal computer はいYes
ローカル コンピューターと直接形式名Local computer and direct format name はいYes
リモート コンピューターRemote computer いいえNo
リモート コンピューターと直接形式名Remote computer and direct format name はいYes
こちらもご覧ください

ReceiveById(String, TimeSpan) ReceiveById(String, TimeSpan) ReceiveById(String, TimeSpan) ReceiveById(String, TimeSpan)

指定した ID と一致するメッセージを (非トランザクション キューから) 受信します。指定した ID のメッセージがキューで利用可能になるか、タイムアウトの時間が経過するまで待機します。Receives the message that matches the given identifier (from a non-transactional queue) and waits until either a message with the specified identifier is available in the queue or the time-out expires.

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

パラメーター

id
String String String String

受信するメッセージの IdThe Id of the message to receive.

timeout
TimeSpan TimeSpan TimeSpan TimeSpan

新しいメッセージを検査できるようになるまでの待機時間を示す TimeSpanA TimeSpan that indicates the time to wait until a new message is available for inspection.

戻り値

渡された id パラメーターと一致する Id プロパティを持つ MessageThe Message whose Id property matches the id parameter passed in.

例外

id パラメーターが null です。The id parameter is null.

timeout パラメーターに指定した値が無効です。timeoutZero よりも小さいか、InfiniteTimeout よりも大きい可能性があります。The value specified for the timeout parameter is not valid, possibly timeout is less than Zero or greater than InfiniteTimeout.

タイムアウトが経過する前に、指定された id を持つメッセージがキューに到達しませんでした。A message with the specified id did not arrive in the queue before the time-out expired.

または-or- メッセージ キューのメソッドにアクセスしたときにエラーが発生しました。An error occurred when accessing a Message Queuing method.

次のコード例は、ReceiveById(String, TimeSpan) の使用方法を示します。The following code example demonstrates the use of ReceiveById(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;

// Receive the message from the queue.
msg = queue->ReceiveById(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;

// Receive the message from the queue.
msg = queue.ReceiveById(id, TimeSpan.FromSeconds(10.0));

注釈

既知の識別子を持つメッセージを読み取り、キューから削除するには、このメソッドを使用します。Use this method to read a message with a known identifier and remove it from the queue. このメソッドはで指定した id のメッセージをすぐに返します、idパラメーターが、キュー内にします。This method returns immediately if the message with the identifier specified by the id parameter is in the queue. それ以外の場合、メソッドは、新しいメッセージが到着する時間の指定された期間を待機します。Otherwise, the method waits the given period of time for a new message to arrive. タイムアウトの有効期限が切れる前に、新しいメッセージが到達しませんが、例外がスローされます。If a new message does not arrive before the time-out expires, an exception is thrown.

timeoutパラメーターでこのメソッドの実行時間の合計が指定されていません。The timeout parameter does not specify the total running time for this method. 代わりに、新しいメッセージがキューに到達するまで待機する時間を指定します。Rather, it specifies the time to wait for a new message to arrive in the queue. 新しいメッセージが到着するたびに、このメソッドは、検査、Idと一致している新しいメッセージのidパラメーター。Each time a new message arrives, this method examines the Id of the new message to see if it matches the id parameter. されていない場合、このメソッドは、経由でタイムアウト期間を開始し、もう 1 つの新しいメッセージが到着するを待ちます。If not, this method starts the time-out period over and waits for another new message to arrive. そのため、タイムアウト期間内に到着する新しいメッセージが引き続き、あるせず、新しいメッセージが到着すると、タイムアウト期間が経過するまで、またはそのメッセージが到着するまで無期限に実行を続行するには、このメソッドの考えられるId一致する、idパラメーター。Therefore, if new messages continue to arrive within the time-out period, it is possible for this method to continue running indefinitely, either until the time-out period expires without any new messages arriving, or until a message arrives whose Id matches the id parameter.

Idがあるため最大で 1 つのメッセージと一致するキューでメッセージのプロパティがメッセージ キュー エンタープライズ全体で一意では、指定されたidパラメーター。The Id property of a message is unique across the Message Queuing enterprise, so there will be at most one message in the queue that matches the given id parameter.

このオーバー ロードを使用して、ReceiveById(String)の現在のスレッドが、によって指定されたタイムアウト期間内にキューに到着する新しいメッセージが引き続き限りにブロックされてもかまわない場合、timeoutパラメーター。Use this overload of ReceiveById(String) when it is acceptable for the current thread to be blocked as long as new messages continue to arrive in the queue within the time-out period specified by the timeout parameter. スレッドはブロックされますを少なくとも指定した期間、または値が指定されている場合InfiniteTimeouttimeoutパラメーター、または新しいメッセージが引き続きによって指定されたタイムアウト期間内にキューに到着する場合、 timeoutパラメーター。The thread will be blocked for at least the given period of time, or indefinitely if you specified the value InfiniteTimeout for the timeout parameter, or if new messages continue to arrive in the queue within the time-out period specified by the timeout parameter.

その他の 2 つのメソッドを使用すると、キューからメッセージを受信できます。Two other methods allow you to receive messages from a queue. Receiveメソッドは、キュー内の最初のメッセージを返します、ReceiveByCorrelationId(String)メソッドの使用を受信確認、レポート、またはキューに送信されるメッセージの結果として作成されたアプリケーションによって生成される応答メッセージを取得します。The Receive method returns the first message in the queue, and the ReceiveByCorrelationId(String) method is used to retrieve an acknowledgment, report, or application-generated response message that was created as a result of a message sent to the queue.

キューから削除せずには、指定した識別子を持つメッセージを読み取り、使用、PeekById(String)メソッド。To read a message with a specified identifier without removing it from the queue, use the PeekById(String) method. PeekById(String)メソッドがメソッドに対する後続の呼び出しより高い優先度のメッセージがキューに到着しない限り、同じメッセージが返されるように、キューで最初のメッセージが常を返します。The PeekById(String) method always returns the first message in the queue, so subsequent calls to the method return the same message unless a higher priority message arrives in the queue.

次の表では、このメソッドは、さまざまなワークグループ モードで使用するかどうかを示します。The following table shows whether this method is available in various Workgroup modes.

ワークグループ モードWorkgroup mode 使用可能Available
ローカル コンピューターLocal computer はいYes
ローカル コンピューターと直接形式名Local computer and direct format name はいYes
リモート コンピューターRemote computer いいえNo
リモート コンピューターと直接形式名Remote computer and direct format name はいYes
こちらもご覧ください

ReceiveById(String, TimeSpan, MessageQueueTransaction) ReceiveById(String, TimeSpan, MessageQueueTransaction) ReceiveById(String, TimeSpan, MessageQueueTransaction) ReceiveById(String, TimeSpan, MessageQueueTransaction)

指定した ID と一致するメッセージを (トランザクション キューから) 受信します。指定した ID のメッセージがキューで利用可能になるか、タイムアウトの時間が経過するまで待機します。Receives the message that matches the given identifier (from a transactional queue) and waits until either a message with the specified identifier is available in the queue or the time-out expires.

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

パラメーター

id
String String String String

受信するメッセージの IdThe Id of the message to receive.

timeout
TimeSpan TimeSpan TimeSpan TimeSpan

新しいメッセージを検査できるようになるまでの待機時間を示す TimeSpanA TimeSpan that indicates the time to wait until a new message is available for inspection.

戻り値

渡された id パラメーターと一致する Id プロパティを持つ MessageThe Message whose Id property matches the id parameter passed in.

例外

id パラメーターが null です。The id parameter is null.

または-or- transaction パラメーターが null です。The transaction parameter is null.

timeout パラメーターに指定した値が無効です。timeoutZero よりも小さいか、InfiniteTimeout よりも大きい可能性があります。The value specified for the timeout parameter is not valid, possibly timeout is less than Zero or greater than InfiniteTimeout.

タイムアウトが経過する前に、指定された id を持つメッセージがキューに到達しませんでした。A message with the specified id did not arrive in the queue before the time-out expired.

または-or- キューが非トランザクション キューです。The queue is non-transactional.

または-or- メッセージ キューのメソッドにアクセスしたときにエラーが発生しました。An error occurred when accessing a Message Queuing method.

次のコード例は、ReceiveById(String, TimeSpan, MessageQueueTransaction) の使用方法を示します。The following code example demonstrates the use of ReceiveById(String, TimeSpan, MessageQueueTransaction).


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

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

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

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

// Create a message queuing transaction.
MessageQueueTransaction^ transaction = gcnew MessageQueueTransaction();

try
{
    // Begin a transaction.
    transaction->Begin();

    // Receive the message from the queue.
    msg = queue->ReceiveById(id, TimeSpan::FromSeconds(10.0),
        transaction);

    // Commit the transaction.
    transaction->Commit();
}
catch (Exception^ ex)
{
    // Cancel the transaction.
    transaction->Abort();

    // Propagate the exception.
    throw ex;
}
finally
{
    // Dispose of the transaction object.
    delete transaction;
    queue->Close();
}


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

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

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

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

// Create a message queuing transaction.
MessageQueueTransaction transaction = new MessageQueueTransaction();

try
{
    // Begin a transaction.
    transaction.Begin();

    // Receive the message from the queue.
    msg = queue.ReceiveById(id, TimeSpan.FromSeconds(10.0),
        transaction);

    // Commit the transaction.
    transaction.Commit();
}
catch(System.Exception e)
{
    // Cancel the transaction.
    transaction.Abort();

    // Propagate the exception.
    throw e;
}
finally
{
    // Dispose of the transaction object.
    transaction.Dispose();
}

注釈

このメソッドを使用して、既知の識別子を持つメッセージを読み取り、によって定義された内部トランザクション コンテキストを使用して、キューから削除する、transactionパラメーター。Use this method to read a message with a known identifier and remove it from the queue, using the internal transaction context defined by the transaction parameter. このメソッドはで指定した id のメッセージをすぐに返します、idパラメーターが、キュー内にします。This method returns immediately if the message with the identifier specified by the id parameter is in the queue. それ以外の場合、メソッドは、新しいメッセージが到着する時間の指定された期間を待機します。Otherwise, the method waits the given period of time for a new message to arrive. タイムアウトの有効期限が切れる前に、新しいメッセージが到達しませんが、例外がスローされます。If a new message does not arrive before the time-out expires, an exception is thrown.

timeoutパラメーターでこのメソッドの実行時間の合計が指定されていません。The timeout parameter does not specify the total running time for this method. 代わりに、新しいメッセージがキューに到達するまで待機する時間を指定します。Rather, it specifies the time to wait for a new message to arrive in the queue. 新しいメッセージが到着するたびに、このメソッドは、検査、Idと一致している新しいメッセージのidパラメーター。Each time a new message arrives, this method examines the Id of the new message to see if it matches the id parameter. されていない場合、このメソッドは、経由でタイムアウト期間を開始し、もう 1 つの新しいメッセージが到着するを待ちます。If not, this method starts the time-out period over and waits for another new message to arrive. そのため、タイムアウト期間内に到着する新しいメッセージが引き続き、あるせず、新しいメッセージが到着すると、タイムアウト期間が経過するまで、またはそのメッセージが到着するまで無期限に実行を続行するには、このメソッドの考えられるId一致する、idパラメーター。Therefore, if new messages continue to arrive within the time-out period, it is possible for this method to continue running indefinitely, either until the time-out period expires without any new messages arriving, or until a message arrives whose Id matches the id parameter.

Idがあるため最大で 1 つのメッセージと一致するキューでメッセージのプロパティがメッセージ キュー エンタープライズ全体で一意では、指定されたidパラメーター。The Id property of a message is unique across the Message Queuing enterprise, so there will be at most one message in the queue that matches the given id parameter.

このオーバー ロードを使用して、ReceiveById(String)の現在のスレッドが、によって指定されたタイムアウト期間内にキューに到着する新しいメッセージが引き続き限りにブロックされてもかまわない場合、timeoutパラメーター。Use this overload of ReceiveById(String) when it is acceptable for the current thread to be blocked as long as new messages continue to arrive in the queue within the time-out period specified by the timeout parameter. スレッドはブロックされますを少なくとも指定した期間、または値が指定されている場合InfiniteTimeouttimeoutパラメーター、または新しいメッセージが引き続きで指定されたタイムアウト期間内にキューに到着する場合、 timeoutパラメーター。The thread will be blocked for at least the given period of time, or indefinitely if you specified the value InfiniteTimeout for the timeout parameter, or if new messages continue to arrive in the queue within the timeout period specified by the timeout parameter.

トランザクション キューでこのメソッドを呼び出したため、受信したメッセージが返されます、キューにトランザクションが中止された場合。Because this method is called on a transactional queue, the message that is received would be returned to the queue if the transaction is aborted. メッセージは完全に削除されません、キューから、トランザクションがコミットされるまで。The message is not permanently removed from the queue until the transaction is committed.

その他の 2 つのメソッドを使用すると、キューからメッセージを受信できます。Two other methods allow you to receive messages from a queue. Receiveメソッドは、キュー内の最初のメッセージを返します、ReceiveByCorrelationId(String)メソッドの使用を受信確認、レポート、またはキューに送信されるメッセージの結果として作成されたアプリケーションによって生成される応答メッセージを取得します。The Receive method returns the first message in the queue, and the ReceiveByCorrelationId(String) method is used to retrieve an acknowledgment, report, or application-generated response message that was created as a result of a message sent to the queue.

キューから削除せずには、指定した識別子を持つメッセージを読み取り、使用、PeekById(String)メソッド。To read a message with a specified identifier without removing it from the queue, use the PeekById(String) method. PeekById(String)メソッドがより高い優先度のメッセージがキューに到着しない限り、メソッドに対する後続の呼び出しは、同じメッセージを返すために、キューで最初のメッセージが常を返します。The PeekById(String) method always returns the first message in the queue, so subsequent calls to the method return the same message, unless a higher priority message arrives in the queue. 呼び出しによって返されるメッセージに関連付けられたトランザクション コンテキストがないPeekById(String)します。There is no transaction context associated with a message returned by a call to PeekById(String). PeekById(String)キューにメッセージは削除されませんがあるトランザクションが中止された場合はロールバックするものがありません。Because PeekById(String) does not remove any messages in the queue, there would be nothing to roll back if the transaction were aborted.

次の表では、このメソッドは、さまざまなワークグループ モードで使用するかどうかを示します。The following table shows whether this method is available in various Workgroup modes.

ワークグループ モードWorkgroup mode 使用可能Available
ローカル コンピューターLocal computer はいYes
ローカル コンピューターと直接形式名Local computer and direct format name はいYes
リモート コンピューターRemote computer いいえNo
リモート コンピューターと直接形式名Remote computer and direct format name はいYes
こちらもご覧ください

ReceiveById(String, TimeSpan, MessageQueueTransactionType) ReceiveById(String, TimeSpan, MessageQueueTransactionType) ReceiveById(String, TimeSpan, MessageQueueTransactionType) ReceiveById(String, TimeSpan, MessageQueueTransactionType)

指定した ID と一致するメッセージを受信します。指定した ID のメッセージがキューで利用可能になるか、タイムアウトの時間が経過するまで待機します。Receives the message that matches the given identifier and waits until either a message with the specified identifier is available in the queue or the time-out expires.

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

パラメーター

id
String String String String

受信するメッセージの IdThe Id of the message to receive.

timeout
TimeSpan TimeSpan TimeSpan TimeSpan

新しいメッセージを検査できるようになるまでの待機時間を示す TimeSpanA TimeSpan that indicates the time to wait until a new message is available for inspection.

transactionType
MessageQueueTransactionType MessageQueueTransactionType MessageQueueTransactionType MessageQueueTransactionType

メッセージと関連付けるトランザクション コンテキストの種類を示す、MessageQueueTransactionType 値の 1 つ。One of the MessageQueueTransactionType values, describing the type of transaction context to associate with the message.

戻り値

渡された id パラメーターと一致する Id プロパティを持つ MessageThe Message whose Id property matches the id parameter passed in.

例外

id パラメーターが null です。The id parameter is null.

timeout パラメーターに指定した値が無効です。timeoutZero よりも小さいか、InfiniteTimeout よりも大きい可能性があります。The value specified for the timeout parameter is not valid, possibly timeout is less than Zero or greater than InfiniteTimeout.

タイムアウトが経過する前に、指定された id を持つメッセージがキューに到達しませんでした。A message with the specified id did not arrive in the queue before the time-out expired.

または-or- メッセージ キューのメソッドにアクセスしたときにエラーが発生しました。An error occurred when accessing a Message Queuing method.

transactionType パラメーターが、MessageQueueTransactionType メンバーの 1 つではありません。The transactionType parameter is not one of the MessageQueueTransactionType members.

次のコード例は、ReceiveById(String, TimeSpan, MessageQueueTransactionType) の使用方法を示します。The following code example demonstrates the use of ReceiveById(String, TimeSpan, MessageQueueTransactionType).


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

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

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

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

// Receive the message from the queue.
msg = queue->ReceiveById(id, TimeSpan::FromSeconds(10.0),
    MessageQueueTransactionType::Single);

queue->Close();


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

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

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

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

// Receive the message from the queue.
msg = queue.ReceiveById(id, TimeSpan.FromSeconds(10.0),
    MessageQueueTransactionType.Single);

注釈

既知の識別子を持つメッセージを読み取り、キューから削除するには、このメソッドを使用します。Use this method to read a message with a known identifier and remove it from the queue. このメソッドはで指定した id のメッセージをすぐに返します、idで定義されたトランザクションのコンテキストを使用して、キュー内のパラメーターは、transactionTypeパラメーター。This method returns immediately if the message with the identifier specified by the id parameter is in the queue, using a transaction context defined by the transactionType parameter. それ以外の場合、メソッドは、新しいメッセージが到着する時間の指定された期間を待機します。Otherwise, the method waits the given period of time for a new message to arrive. タイムアウトの有効期限が切れる前に、新しいメッセージが到達しませんが、例外がスローされます。If a new message does not arrive before the time-out expires, an exception is thrown.

timeoutパラメーターでこのメソッドの実行時間の合計が指定されていません。The timeout parameter does not specify the total running time for this method. 代わりに、新しいメッセージがキューに到達するまで待機する時間を指定します。Rather, it specifies the time to wait for a new message to arrive in the queue. 新しいメッセージが到着するたびに、このメソッドは、検査、Idと一致している新しいメッセージのidパラメーター。Each time a new message arrives, this method examines the Id of the new message to see if it matches the id parameter. されていない場合、このメソッドは、経由でタイムアウト期間を開始し、もう 1 つの新しいメッセージが到着するを待ちます。If not, this method starts the time-out period over and waits for another new message to arrive. そのため、タイムアウト期間内に到着する新しいメッセージが引き続き、あるせず、新しいメッセージが到着すると、タイムアウト期間が経過するまで、またはそのメッセージが到着するまで無期限に実行を続行するには、このメソッドの考えられるId一致する、idパラメーター。Therefore, if new messages continue to arrive within the time-out period, it is possible for this method to continue running indefinitely, either until the time-out period expires without any new messages arriving, or until a message arrives whose Id matches the id parameter.

指定AutomatictransactionType外部トランザクション コンテキストが既に存在する場合は、パラメーターを使用してメッセージを受信する必要のあるスレッドにアタッチされています。Specify Automatic for the transactionType parameter if there is already an external transaction context attached to the thread that you want to use to receive the message. 指定Singleとして 1 つの内部トランザクション メッセージを受信したい場合。Specify Single if you want to receive the message as a single internal transaction. 指定できるNoneトランザクション コンテキストの外でトランザクション キューからメッセージを受信する場合。You can specify None if you want to receive a message from a transactional queue outside of a transaction context.

Idがあるため最大で 1 つのメッセージと一致するキューでメッセージのプロパティがメッセージ キュー エンタープライズ全体で一意では、指定されたidパラメーター。The Id property of a message is unique across the Message Queuing enterprise, so there will be at most one message in the queue that matches the given id parameter. 指定した識別子を持つメッセージが関連付けられているもの以外のキューの場合MessageQueueインスタンス、メッセージが見つかりません。If the message with the specified identifier is in a queue other than the one associated with this MessageQueue instance, the message will not be found.

このオーバー ロードを使用して、ReceiveById(String)の現在のスレッドが、によって指定されたタイムアウト期間内にキューに到着する新しいメッセージが引き続き限りにブロックされてもかまわない場合、timeoutパラメーター。Use this overload of ReceiveById(String) when it is acceptable for the current thread to be blocked as long as new messages continue to arrive in the queue within the time-out period specified by the timeout parameter. スレッドはブロックされますを少なくとも指定した期間、または値が指定されている場合InfiniteTimeouttimeoutパラメーター、または新しいメッセージが引き続きによって指定されたタイムアウト期間内にキューに到着する場合、 timeoutパラメーター。The thread will be blocked for at least the given period of time, or indefinitely if you specified the value InfiniteTimeout for the timeout parameter, or if new messages continue to arrive in the queue within the time-out period specified by the timeout parameter.

トランザクション キューからメッセージを受信するこのメソッドが呼び出されると、受信したメッセージが返されます、キューにトランザクションが中止された場合。If this method is called to receive a message from a transactional queue, the message that is received would be returned to the queue if the transaction is aborted. メッセージは完全に削除されません、キューから、トランザクションがコミットされるまで。The message is not permanently removed from the queue until the transaction is committed.

その他の 2 つのメソッドを使用すると、キューからメッセージを受信できます。Two other methods allow you to receive messages from a queue. Receiveメソッドは、キュー内の最初のメッセージを返します、ReceiveByCorrelationId(String)メソッドの使用を受信確認、レポート、またはキューに送信されるメッセージの結果として作成されたアプリケーションによって生成される応答メッセージを取得します。The Receive method returns the first message in the queue, and the ReceiveByCorrelationId(String) method is used to retrieve an acknowledgment, report, or application-generated response message that was created as a result of a message sent to the queue.

キューから削除せずには、指定した識別子を持つメッセージを読み取り、使用、PeekById(String)メソッド。To read a message with a specified identifier without removing it from the queue, use the PeekById(String) method. PeekById(String)メソッドがメソッドに対する後続の呼び出しより高い優先度のメッセージがキューに到着しない限り、同じメッセージが返されるように、キューで最初のメッセージが常を返します。The PeekById(String) method always returns the first message in the queue, so subsequent calls to the method return the same message unless a higher priority message arrives in the queue. 呼び出しによって返されるメッセージに関連付けられたトランザクション コンテキストがないPeekById(String)します。There is no transaction context associated with a message returned by a call to PeekById(String). PeekById(String)キューにメッセージは削除されませんがあるトランザクションが中止された場合はロールバックするものがありません。Because PeekById(String) does not remove any messages in the queue, there would be nothing to roll back if the transaction were aborted.

次の表では、このメソッドは、さまざまなワークグループ モードで使用するかどうかを示します。The following table shows whether this method is available in various Workgroup modes.

ワークグループ モードWorkgroup mode 使用可能Available
ローカル コンピューターLocal computer はいYes
ローカル コンピューターと直接形式名Local computer and direct format name はいYes
リモート コンピューターRemote computer いいえNo
リモート コンピューターと直接形式名Remote computer and direct format name はいYes
こちらもご覧ください

適用対象