MessageQueue.ReceiveById 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
주어진 식별자를 갖는 메시지를 받고, 큐에서 제거합니다.
오버로드
ReceiveById(String) |
주어진 식별자를 갖는 메시지를 비트랜잭션 큐로부터 받습니다. 지정된 식별자가 들어 있는 메시지가 큐에 현재 없는 경우에는 바로 예외가 발생합니다. |
ReceiveById(String, MessageQueueTransaction) |
주어진 식별자를 갖는 메시지를 트랜잭션 큐로부터 받습니다. 지정된 식별자가 포함된 메시지가 큐에 현재 없는 경우에는 바로 예외가 발생합니다. |
ReceiveById(String, MessageQueueTransactionType) |
주어진 식별자를 갖는 메시지를 받습니다. 지정된 식별자가 포함된 메시지가 큐에 현재 없는 경우에는 바로 예외가 발생합니다. |
ReceiveById(String, TimeSpan) |
주어진 식별자를 갖는 메시지를 비트랜잭션 큐로부터 받고, 지정된 식별자가 포함된 메시지를 큐에서 사용할 수 있거나 제한 시간이 만료될 때까지 대기합니다. |
ReceiveById(String, TimeSpan, MessageQueueTransaction) |
주어진 식별자를 갖는 메시지를 트랜잭션 큐로부터 받고, 지정된 식별자가 포함된 메시지를 큐에서 사용할 수 있거나 제한 시간이 만료될 때까지 대기합니다. |
ReceiveById(String, TimeSpan, MessageQueueTransactionType) |
주어진 식별자를 갖는 메시지를 받고, 지정된 식별자가 포함된 메시지를 큐에서 사용할 수 있거나 제한 시간이 만료될 때까지 대기합니다. |
ReceiveById(String)
주어진 식별자를 갖는 메시지를 비트랜잭션 큐로부터 받습니다. 지정된 식별자가 들어 있는 메시지가 큐에 현재 없는 경우에는 바로 예외가 발생합니다.
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
매개 변수와 Message 속성이 일치하는 Id를 반환합니다.
예외
id
매개 변수가 null
인 경우
지정된 id
의 메시지를 찾을 수 없는 경우
메시지 큐 메서드에 액세스하는 동안 오류가 발생한 경우
예제
다음 코드 예제에서는 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);
설명
이 메서드를 사용하여 알려진 식별자가 있는 메시지를 읽고 큐에서 제거합니다. 메시지가 큐에 없는 경우 이 메서드는 즉시 예외를 throw합니다.
메시지의 속성은 Id 메시지 큐 엔터프라이즈에서 고유하므로 큐에 지정된 id
매개 변수와 일치하는 메시지가 하나 이상 있습니다.
다른 두 가지 방법을 사용하면 큐에서 메시지를 받을 수 있습니다. 합니다 Receive 큐의 첫 번째 메시지를 반환 하는 메서드 및 ReceiveByCorrelationId(String) 메서드는 승인, 보고서 또는 큐로 보낸 메시지의 결과로 생성 된 애플리케이션에서 생성 한 응답 메시지를 검색 하는 합니다.
큐에서 제거하지 않고 지정된 식별자가 있는 메시지를 읽으려면 메서드를 PeekById(String) 사용합니다. 메서드는 PeekById(String) 항상 큐의 첫 번째 메시지를 반환하므로 우선 순위가 높은 메시지가 큐에 도착하지 않는 한 메서드에 대한 후속 호출은 동일한 메시지를 반환합니다.
다음 표에서는 이 메서드를 다양한 작업 그룹 모드에서 사용할 수 있는지 여부를 보여 줍니다.
작업 그룹 모드 | 사용 가능 |
---|---|
수집 | Yes |
로컬 컴퓨터 및 직접 형식 이름 | Yes |
원격 컴퓨터 | No |
원격 컴퓨터 및 직접 형식 이름 | Yes |
추가 정보
적용 대상
ReceiveById(String, MessageQueueTransaction)
주어진 식별자를 갖는 메시지를 트랜잭션 큐로부터 받습니다. 지정된 식별자가 포함된 메시지가 큐에 현재 없는 경우에는 바로 예외가 발생합니다.
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
매개 변수
- transaction
- MessageQueueTransaction
반환
전달된 id
매개 변수와 Message 속성이 일치하는 Id를 반환합니다.
예외
지정된 id
의 메시지를 찾을 수 없는 경우
예제
다음 코드 예제에서는 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
내부 트랜잭션 컨텍스트를 사용하여 큐에서 제거합니다. 메시지가 큐에 없는 경우 이 메서드는 즉시 예외를 throw합니다.
메시지의 속성은 Id 메시지 큐 엔터프라이즈에서 고유하므로 큐에 지정된 id
매개 변수와 일치하는 메시지가 하나 이상 있습니다.
이 메서드는 트랜잭션 큐에서 호출되므로 트랜잭션이 중단되면 수신된 메시지가 큐로 반환됩니다. 트랜잭션이 커밋될 때까지 메시지는 큐에서 영구적으로 제거되지 않습니다.
다른 두 가지 방법을 사용하면 큐에서 메시지를 받을 수 있습니다. 합니다 Receive 큐의 첫 번째 메시지를 반환 하는 메서드 및 ReceiveByCorrelationId(String) 메서드는 승인, 보고서 또는 큐로 보낸 메시지의 결과로 생성 된 애플리케이션에서 생성 한 응답 메시지를 검색 하는 합니다.
큐에서 제거하지 않고 지정된 식별자가 있는 메시지를 읽으려면 메서드를 PeekById(String) 사용합니다. 메서드는 PeekById(String) 항상 큐의 첫 번째 메시지를 반환하므로 우선 순위가 높은 메시지가 큐에 도착하지 않는 한 메서드에 대한 후속 호출은 동일한 메시지를 반환합니다. 에 대한 호출 PeekById(String)에서 반환된 메시지와 연결된 트랜잭션 컨텍스트가 없습니다. 는 PeekById(String) 큐의 메시지를 제거하지 않으므로 트랜잭션이 중단된 경우 롤백할 것이 없습니다.
다음 표에서는 이 메서드를 다양한 작업 그룹 모드에서 사용할 수 있는지 여부를 보여 줍니다.
작업 그룹 모드 | 사용 가능 |
---|---|
수집 | Yes |
로컬 컴퓨터 및 직접 형식 이름 | Yes |
원격 컴퓨터 | No |
원격 컴퓨터 및 직접 형식 이름 | Yes |
추가 정보
적용 대상
ReceiveById(String, MessageQueueTransactionType)
주어진 식별자를 갖는 메시지를 받습니다. 지정된 식별자가 포함된 메시지가 큐에 현재 없는 경우에는 바로 예외가 발생합니다.
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
매개 변수
- transactionType
- MessageQueueTransactionType
MessageQueueTransactionType 값 중 하나로, 메시지와 연결할 트랜잭션 컨텍스트 형식을 설명합니다.
반환
전달된 id
매개 변수와 Message 속성이 일치하는 Id를 반환합니다.
예외
id
매개 변수가 null
인 경우
지정된 id
의 메시지를 찾을 수 없는 경우
transactionType
매개 변수가 MessageQueueTransactionType 멤버 중 하나가 아닌 경우
메시지 큐 메서드에 액세스하는 동안 오류가 발생한 경우
예제
다음 코드 예제에서는 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);
설명
이 메서드를 사용하여 알려진 식별자가 있는 메시지를 읽고 큐에서 제거합니다. 메시지가 큐에 없는 경우 이 메서드는 즉시 예외를 throw합니다. 메시지 큐에서 제거 되 고 정의한 트랜잭션 컨텍스트를 사용 하 여 애플리케이션에 반환 되는 고, 그렇지는 transactionType
매개 변수입니다.
메시지를 수신하는 transactionType
데 사용할 스레드에 연결된 외부 트랜잭션 컨텍스트가 이미 있는 경우 매개 변수에 를 지정 Automatic
합니다. Single
메시지를 단일 내부 트랜잭션으로 받을지 지정합니다. 트랜잭션 컨텍스트 외부의 트랜잭션 큐에서 메시지를 받을지 지정할 수 있습니다 None
.
메시지의 속성은 Id 메시지 큐 엔터프라이즈에서 고유하므로 큐에 지정된 id
매개 변수와 일치하는 메시지가 하나 이상 있습니다. 지정된 식별자가 있는 메시지가 이 MessageQueue instance 연결된 메시지 이외의 큐에 있으면 메시지를 찾을 수 없습니다.
트랜잭션 큐에서 메시지를 수신하기 위해 이 메서드를 호출하면 트랜잭션이 중단되면 수신된 메시지가 큐로 반환됩니다. 트랜잭션이 커밋될 때까지 메시지는 큐에서 영구적으로 제거되지 않습니다.
다른 두 가지 방법을 사용하면 큐에서 메시지를 받을 수 있습니다. 합니다 Receive 큐의 첫 번째 메시지를 반환 하는 메서드 및 ReceiveByCorrelationId(String) 메서드는 승인, 보고서 또는 큐로 보낸 메시지의 결과로 생성 된 애플리케이션에서 생성 한 응답 메시지를 검색 하는 합니다.
큐에서 제거하지 않고 지정된 식별자가 있는 메시지를 읽으려면 메서드를 PeekById(String) 사용합니다. 메서드는 PeekById(String) 항상 큐의 첫 번째 메시지를 반환하므로 우선 순위가 높은 메시지가 큐에 도착하지 않는 한 메서드에 대한 후속 호출은 동일한 메시지를 반환합니다. 에 대한 호출 PeekById(String)에서 반환된 메시지와 연결된 트랜잭션 컨텍스트가 없습니다. 는 PeekById(String) 큐의 메시지를 제거하지 않으므로 트랜잭션이 중단된 경우 롤백할 것이 없습니다.
다음 표에서는 이 메서드를 다양한 작업 그룹 모드에서 사용할 수 있는지 여부를 보여 줍니다.
작업 그룹 모드 | 사용 가능 |
---|---|
수집 | Yes |
로컬 컴퓨터 및 직접 형식 이름 | Yes |
원격 컴퓨터 | No |
원격 컴퓨터 및 직접 형식 이름 | Yes |
추가 정보
적용 대상
ReceiveById(String, TimeSpan)
주어진 식별자를 갖는 메시지를 비트랜잭션 큐로부터 받고, 지정된 식별자가 포함된 메시지를 큐에서 사용할 수 있거나 제한 시간이 만료될 때까지 대기합니다.
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
매개 변수와 Message 속성이 일치하는 Id를 반환합니다.
예외
id
매개 변수가 null
인 경우
timeout
매개 변수에 지정된 값이 잘못된 경우. timeout
이 Zero보다 작거나 InfiniteTimeout보다 클 수 있습니다.
예제
다음 코드 예제에서는 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));
설명
이 메서드를 사용하여 알려진 식별자가 있는 메시지를 읽고 큐에서 제거합니다. 매개 변수로 지정된 id
식별자가 있는 메시지가 큐에 있는 경우 이 메서드는 즉시 를 반환합니다. 그렇지 않으면 메서드는 지정된 기간 동안 새 메시지가 도착할 때까지 기다립니다. 제한 시간이 만료되기 전에 새 메시지가 도착하지 않으면 예외가 throw됩니다.
매개 변수는 timeout
이 메서드의 총 실행 시간을 지정하지 않습니다. 대신 새 메시지가 큐에 도착할 때까지 기다리는 시간을 지정합니다. 새 메시지가 도착할 때마다 이 메서드는 새 메시지의 를 Id 검사하여 매개 변수와 id
일치하는지 확인합니다. 그렇지 않은 경우 이 메서드는 시간 제한 기간을 시작하고 다른 새 메시지가 도착할 때까지 기다립니다. 따라서 새 메시지가 제한 시간 내에 계속 도착하는 경우 새 메시지가 도착하지 않고 제한 시간이 만료되거나 매개 변수와 일치하는 id
메시지가 도착할 때까지 이 메서드가 무기한으로 계속 실행될 수 있습니다Id.
메시지의 속성은 Id 메시지 큐 엔터프라이즈에서 고유하므로 큐에 지정된 id
매개 변수와 일치하는 메시지가 하나 이상 있습니다.
매개 변수에 지정된 제한 시간 내에 새 메시지가 큐에 계속 도착하는 한 현재 스레드가 차단될 수 있는 경우 이 오버로드 ReceiveById(String) 를 timeout
사용합니다. 스레드는 지정된 기간 동안 또는 매개 변수에 대한 timeout
값을 InfiniteTimeout 지정한 경우 또는 매개 변수에 지정된 제한 시간 내에 새 메시지가 큐에 계속 도착하는 경우 무기한으로 차단됩니다timeout
.
다른 두 가지 방법을 사용하면 큐에서 메시지를 받을 수 있습니다. 합니다 Receive 큐의 첫 번째 메시지를 반환 하는 메서드 및 ReceiveByCorrelationId(String) 메서드는 승인, 보고서 또는 큐로 보낸 메시지의 결과로 생성 된 애플리케이션에서 생성 한 응답 메시지를 검색 하는 합니다.
큐에서 제거하지 않고 지정된 식별자가 있는 메시지를 읽으려면 메서드를 PeekById(String) 사용합니다. 메서드는 PeekById(String) 항상 큐의 첫 번째 메시지를 반환하므로 우선 순위가 높은 메시지가 큐에 도착하지 않는 한 메서드에 대한 후속 호출은 동일한 메시지를 반환합니다.
다음 표에서는 이 메서드를 다양한 작업 그룹 모드에서 사용할 수 있는지 여부를 보여 줍니다.
작업 그룹 모드 | 사용 가능 |
---|---|
수집 | Yes |
로컬 컴퓨터 및 직접 형식 이름 | Yes |
원격 컴퓨터 | No |
원격 컴퓨터 및 직접 형식 이름 | Yes |
추가 정보
적용 대상
ReceiveById(String, TimeSpan, MessageQueueTransaction)
주어진 식별자를 갖는 메시지를 트랜잭션 큐로부터 받고, 지정된 식별자가 포함된 메시지를 큐에서 사용할 수 있거나 제한 시간이 만료될 때까지 대기합니다.
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
매개 변수
- transaction
- MessageQueueTransaction
반환
전달된 id
매개 변수와 Message 속성이 일치하는 Id를 반환합니다.
예외
timeout
매개 변수에 지정된 값이 잘못된 경우. timeout
이 Zero보다 작거나 InfiniteTimeout보다 클 수 있습니다.
제한 시간이 만료되기 전에 id
가 지정된 메시지가 큐에 도착하지 않았습니다.
또는
비트랜잭션 큐입니다.
또는
메시지 큐 메서드에 액세스하는 동안 오류가 발생한 경우
예제
다음 코드 예제에서는 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
내부 트랜잭션 컨텍스트를 사용하여 큐에서 제거합니다. 매개 변수로 지정된 id
식별자가 있는 메시지가 큐에 있는 경우 이 메서드는 즉시 를 반환합니다. 그렇지 않으면 메서드는 지정된 기간 동안 새 메시지가 도착할 때까지 기다립니다. 제한 시간이 만료되기 전에 새 메시지가 도착하지 않으면 예외가 throw됩니다.
매개 변수는 timeout
이 메서드의 총 실행 시간을 지정하지 않습니다. 대신 새 메시지가 큐에 도착할 때까지 기다리는 시간을 지정합니다. 새 메시지가 도착할 때마다 이 메서드는 새 메시지의 를 Id 검사하여 매개 변수와 id
일치하는지 확인합니다. 그렇지 않은 경우 이 메서드는 시간 제한 기간을 시작하고 다른 새 메시지가 도착할 때까지 기다립니다. 따라서 새 메시지가 제한 시간 내에 계속 도착하는 경우 새 메시지가 도착하지 않고 제한 시간이 만료되거나 매개 변수와 일치하는 id
메시지가 도착할 때까지 이 메서드가 무기한으로 계속 실행될 수 있습니다Id.
메시지의 속성은 Id 메시지 큐 엔터프라이즈에서 고유하므로 큐에 지정된 id
매개 변수와 일치하는 메시지가 하나 이상 있습니다.
매개 변수에 지정된 제한 시간 내에 새 메시지가 큐에 계속 도착하는 한 현재 스레드가 차단될 수 있는 경우 이 오버로드 ReceiveById(String) 를 timeout
사용합니다. 스레드는 지정된 기간 동안 또는 매개 변수에 대한 timeout
값을 InfiniteTimeout 지정한 경우 또는 매개 변수에 지정된 시간 제한 기간 내에 새 메시지가 큐에 계속 도착하는 경우 무기한으로 차단됩니다timeout
.
이 메서드는 트랜잭션 큐에서 호출되므로 트랜잭션이 중단되면 수신된 메시지가 큐로 반환됩니다. 트랜잭션이 커밋될 때까지 메시지는 큐에서 영구적으로 제거되지 않습니다.
다른 두 가지 방법을 사용하면 큐에서 메시지를 받을 수 있습니다. 합니다 Receive 큐의 첫 번째 메시지를 반환 하는 메서드 및 ReceiveByCorrelationId(String) 메서드는 승인, 보고서 또는 큐로 보낸 메시지의 결과로 생성 된 애플리케이션에서 생성 한 응답 메시지를 검색 하는 합니다.
큐에서 제거하지 않고 지정된 식별자가 있는 메시지를 읽으려면 메서드를 PeekById(String) 사용합니다. 메서드는 PeekById(String) 항상 큐의 첫 번째 메시지를 반환하므로 우선 순위가 높은 메시지가 큐에 도착하지 않는 한 메서드에 대한 후속 호출은 동일한 메시지를 반환합니다. 에 대한 호출 PeekById(String)에서 반환된 메시지와 연결된 트랜잭션 컨텍스트가 없습니다. 는 PeekById(String) 큐의 메시지를 제거하지 않으므로 트랜잭션이 중단된 경우 롤백할 것이 없습니다.
다음 표에서는 이 메서드를 다양한 작업 그룹 모드에서 사용할 수 있는지 여부를 보여 줍니다.
작업 그룹 모드 | 사용 가능 |
---|---|
수집 | Yes |
로컬 컴퓨터 및 직접 형식 이름 | Yes |
원격 컴퓨터 | No |
원격 컴퓨터 및 직접 형식 이름 | Yes |
추가 정보
적용 대상
ReceiveById(String, TimeSpan, MessageQueueTransactionType)
주어진 식별자를 갖는 메시지를 받고, 지정된 식별자가 포함된 메시지를 큐에서 사용할 수 있거나 제한 시간이 만료될 때까지 대기합니다.
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
매개 변수
- transactionType
- MessageQueueTransactionType
MessageQueueTransactionType 값 중 하나로, 메시지와 연결할 트랜잭션 컨텍스트 형식을 설명합니다.
반환
전달된 id
매개 변수와 Message 속성이 일치하는 Id를 반환합니다.
예외
id
매개 변수가 null
인 경우
timeout
매개 변수에 지정된 값이 잘못된 경우. timeout
이 Zero보다 작거나 InfiniteTimeout보다 클 수 있습니다.
transactionType
매개 변수가 MessageQueueTransactionType 멤버 중 하나가 아닌 경우
예제
다음 코드 예제에서는 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);
설명
이 메서드를 사용하여 알려진 식별자가 있는 메시지를 읽고 큐에서 제거합니다. 매개 변수로 지정된 id
식별자가 있는 메시지가 매개 변수로 정의된 transactionType
트랜잭션 컨텍스트를 사용하여 큐에 있는 경우 이 메서드는 즉시 를 반환합니다. 그렇지 않으면 메서드는 지정된 기간 동안 새 메시지가 도착할 때까지 기다립니다. 제한 시간이 만료되기 전에 새 메시지가 도착하지 않으면 예외가 throw됩니다.
매개 변수는 timeout
이 메서드의 총 실행 시간을 지정하지 않습니다. 대신 새 메시지가 큐에 도착할 때까지 기다리는 시간을 지정합니다. 새 메시지가 도착할 때마다 이 메서드는 새 메시지의 를 Id 검사하여 매개 변수와 id
일치하는지 확인합니다. 그렇지 않은 경우 이 메서드는 시간 제한 기간을 시작하고 다른 새 메시지가 도착할 때까지 기다립니다. 따라서 새 메시지가 제한 시간 내에 계속 도착하는 경우 새 메시지가 도착하지 않고 제한 시간이 만료되거나 매개 변수와 일치하는 id
메시지가 도착할 때까지 이 메서드가 무기한으로 계속 실행될 수 있습니다Id.
메시지를 수신하는 transactionType
데 사용할 스레드에 연결된 외부 트랜잭션 컨텍스트가 이미 있는 경우 매개 변수에 를 지정 Automatic
합니다. Single
메시지를 단일 내부 트랜잭션으로 받을지 지정합니다. 트랜잭션 컨텍스트 외부의 트랜잭션 큐에서 메시지를 받을지 지정할 수 있습니다 None
.
메시지의 속성은 Id 메시지 큐 엔터프라이즈에서 고유하므로 큐에 지정된 id
매개 변수와 일치하는 메시지가 하나 이상 있습니다. 지정된 식별자가 있는 메시지가 이 MessageQueue instance 연결된 메시지 이외의 큐에 있으면 메시지를 찾을 수 없습니다.
매개 변수에 지정된 제한 시간 내에 새 메시지가 큐에 계속 도착하는 한 현재 스레드가 차단될 수 있는 경우 이 오버로드 ReceiveById(String) 를 timeout
사용합니다. 스레드는 지정된 기간 동안 또는 매개 변수에 대한 timeout
값을 InfiniteTimeout 지정한 경우 또는 매개 변수에 지정된 제한 시간 내에 새 메시지가 큐에 계속 도착하는 경우 무기한으로 차단됩니다timeout
.
트랜잭션 큐에서 메시지를 수신하기 위해 이 메서드를 호출하면 트랜잭션이 중단되면 수신된 메시지가 큐로 반환됩니다. 트랜잭션이 커밋될 때까지 메시지는 큐에서 영구적으로 제거되지 않습니다.
다른 두 가지 방법을 사용하면 큐에서 메시지를 받을 수 있습니다. 합니다 Receive 큐의 첫 번째 메시지를 반환 하는 메서드 및 ReceiveByCorrelationId(String) 메서드는 승인, 보고서 또는 큐로 보낸 메시지의 결과로 생성 된 애플리케이션에서 생성 한 응답 메시지를 검색 하는 합니다.
큐에서 제거하지 않고 지정된 식별자가 있는 메시지를 읽으려면 메서드를 PeekById(String) 사용합니다. 메서드는 PeekById(String) 항상 큐의 첫 번째 메시지를 반환하므로 우선 순위가 높은 메시지가 큐에 도착하지 않는 한 메서드에 대한 후속 호출은 동일한 메시지를 반환합니다. 에 대한 호출 PeekById(String)에서 반환된 메시지와 연결된 트랜잭션 컨텍스트가 없습니다. 는 PeekById(String) 큐의 메시지를 제거하지 않으므로 트랜잭션이 중단된 경우 롤백할 것이 없습니다.
다음 표에서는 이 메서드를 다양한 작업 그룹 모드에서 사용할 수 있는지 여부를 보여 줍니다.
작업 그룹 모드 | 사용 가능 |
---|---|
수집 | Yes |
로컬 컴퓨터 및 직접 형식 이름 | Yes |
원격 컴퓨터 | No |
원격 컴퓨터 및 직접 형식 이름 | Yes |
추가 정보
적용 대상
.NET