Практическое руководство. Просмотр первого сообщения в очереди
Обновлен: Ноябрь 2007
Метод Peek может использоваться для просмотра первого сообщения в любой очереди без его удаления из очереди. Это позволяет компоненту получить информацию из очереди, не мешая остальным приложениям и компонентам получать сообщения, подлежащие обработке.
Примечание. |
---|
Метод Peek позволяет просмотреть только первое сообщение в очереди. Поскольку во время его просмотра сообщение из очереди не извлекается, просмотр следующих сообщений невозможен. Для просмотра всех сообщений в очереди без их извлечения используйте метод GetAllMessages или метод GetMessageEnumerator. Дополнительные сведения см. в разделе Наборы очередей и сообщений. |
Если при вызове метода Peek в очереди нет ни одного сообщения, метод ожидает появления сообщения. Для ограничения срока ожидания для метода можно установить период ожидания. Период ожидания задается в виде объекта TimeSpan. В большинстве случаев период ожидания устанавливается или на ноль, когда метод проверяет наличие сообщения и не ждет ни минуты, или на бесконечность (по умолчанию), когда метод ждет до тех пор, пока сообщение не появится. Это следует задать в коде, используя следующий синтаксис:
msg.TimeToBeReceived = System.Messaging.Message.InfiniteTimeout
msg.TimeToBeReceived = System.Messaging.Message.InfiniteTimeout;
msg.set_TimeToBeReceived(System.Messaging.Message.InfiniteTimeout);
Период ожидания также можно установить в окне Свойства, задав свойство TimeToBeReceived.
Совет. |
---|
При использовании зависимых клиентов убедитесь в том, что часы на клиентском компьютере синхронизированы с часами на сервере, на котором работает система очередей сообщений. В противном случае передача сообщения, у которого свойство TimeToBeReceived не установлено в значение InfiniteTimeout, может вызвать непредсказуемое поведение системы. |
Просмотр может быть синхронным или асинхронным. Дополнительные сведения см. в разделе Практическое руководство. Асинхронное получение сообщений.
Синхронный просмотр сообщений
Создайте экземпляр компонента MessageQueue и задайте в качестве значения свойства Path очередь, на которую необходимо сослаться. Дополнительные сведения см. в разделе Практическое руководство. Создание экземпляров компонента MessageQueue.
Создайте экземпляр объекта Message для хранения данных, которые метод Peek копирует из очереди.
Вызовите метод Peek для получения информации о первом сообщении в очереди. При необходимости для метода Peek можно установить период ожидания. Для этого введите промежуток времени (в качестве объекта TimeSpan), в течение которого метод должен ждать, в качестве аргумента метода.
В следующем примере кода показано, как можно использовать метод Peek для получения и отображения информации о первом сообщении в очереди:
Public Sub LookFirstMessage() Dim NewQueue As New System.Messaging.MessageQueue(".\MyQueue") Dim FirstMessage As System.Messaging.Message FirstMessage = NewQueue.Peek Dim targetNames() As String = {"System.String,mscorlib"} FirstMessage.Formatter = _ New System.Messaging.XmlMessageFormatter(targetNames) Dim label As String = CStr(FirstMessage.Label) End Sub
public void LookFirstMessage() { System.Messaging.MessageQueue newQueue = new System.Messaging.MessageQueue(".\\MyQueue"); System.Messaging.Message firstMessage; string[] types = { "System.String,mscorlib" }; firstMessage = newQueue.Peek(); firstMessage.Formatter = new System.Messaging.XmlMessageFormatter(types); string label = firstMessage.Label.ToString(); }
См. также
Задачи
Практическое руководство. Получение сообщений программным способом
Практическое руководство. Создание экземпляров компонента MessageQueue