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 параметру. Эта перегрузка вызывает исключение, если очередь в настоящее время не содержит сообщения.

Два дополнительных метода позволяют просмотреть сообщения в очереди: Peek и PeekByCorrelationId(String). Метод 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 параметру. Эта перегрузка создает исключение, если очередь в настоящее время не содержит сообщения и новое сообщение не поступает до истечения времени ожидания.

Параметр timeout не указывает общее время выполнения для этого метода. Скорее, он указывает время ожидания поступления нового сообщения в очередь. Каждый раз при поступлении нового сообщения этот метод проверяет Id новое сообщение, чтобы узнать, соответствует ли оно параметру id . В противном случае этот метод запускает период ожидания и ожидает получения другого нового сообщения. Таким образом, если новые сообщения по-прежнему поступают в течение периода ожидания, этот метод может продолжать работать неограниченное время либо до истечения времени ожидания без поступления новых сообщений, либо до тех пор, пока не поступит сообщение, соответствующее Id параметру id .

Два дополнительных метода позволяют просмотреть сообщения в очереди: Peek и PeekByCorrelationId(String). Метод Peek возвращает первое сообщение в очереди; PeekByCorrelationId(String) возвращает подтверждение, отчет или ответное сообщение, созданное приложением, которое было создано в результате отправки сообщения в очередь.

В следующей таблице показано, доступен ли этот метод в различных режимах рабочей группы.

Режим рабочей группы Доступно
Локальный компьютер Да
Имя локального компьютера и прямого формата Да
Удаленный компьютер Нет
Имя удаленного компьютера и прямого формата Да

См. также раздел

Применяется к