Практическое руководство. Получение сообщений программным способом
Обновлен: Ноябрь 2007
Синхронный метод под названием Receive может использоваться для просмотра содержимого очереди. При вызове метода Receive для очереди система извлекает из очереди первое сообщение и доставляет его пользователю. Это сообщение становится недоступным для других компонентов, имеющих доступ к очереди.
Примечание. |
---|
Просмотреть первое сообщение в очереди также можно без его извлечения из очереди. Дополнительные сведения см. в разделе Практическое руководство. Просмотр первого сообщения в очереди. Сообщения <]также можно получать асинхронно. Дополнительные сведения см. в разделе Практическое руководство. Асинхронное получение сообщений. |
Если при вызове метода Receive в очереди нет доступных сообщений, метод ожидает появления сообщения в очереди. Для ограничения срока ожидания для метода можно установить период ожидания. Период ожидания задается в виде объекта TimeSpan.
При чтении сообщений из очереди объект модуля форматирования используется для сериализации и десериализации содержания сообщения в ходе его обработки. Дополнительные сведения см. в разделе Знакомство с чтением и получением сообщений.
Метод Receive имеет несколько форм:
Базовый метод с несколькими перегрузками, позволяющий задать такие параметры, как периоды ожидания.
Метод под названием ReceiveById, позволяющий извлечь определенное сообщение по его идентификатору.
Метод под названием ReceiveByCorrelationId, позволяющий извлечь сообщение по его корреляционному идентификатору.
Сведения о корреляционных идентификаторах см. в разделе Хранение очереди сообщений в журнале.
Получение сообщения программными средствами
Создайте экземпляр компонента MessageQueue и задайте в качестве значения свойства Path очередь, на которую необходимо сослаться. Дополнительные сведения см. в разделе Практическое руководство. Создание экземпляров компонента MessageQueue.
Укажите модуль форматирования, который следует использовать для извлечения сообщения. Дополнительные сведения см. в разделе Практическое руководство. Назначение модуля форматирования для полученных сообщений.
Создайте экземпляр объекта Message для хранения полученного сообщения.
Вызовите метод Receive для удаления сообщения из очереди.
Совет. Чтобы задать период ожидания для метода Receive, используйте объект TimeSpan.
Dim mq As New System.Messaging.MessageQueue(".\MyQueue") mq.Send("1", "1") Dim m As System.Messaging.Message m = mq.Receive(New TimeSpan(0, 0, 3)) m.Formatter = New _ System.Messaging.XmlMessageFormatter(New String() _ {"System.String,mscorlib"}) Console.WriteLine(m.Body)
System.Messaging.MessageQueue mq = new System.Messaging.MessageQueue(".\\MyQueue"); mq.Send("1", "1"); System.Messaging.Message m = mq.Receive(new TimeSpan(0, 0, 3)); m.Formatter = new System.Messaging.XmlMessageFormatter(new string[] { "System.String,mscorlib" }); Console.WriteLine(m.Body);
Данный пример кода также доступен в виде фрагмента кода Visual Basic IntelliSense. В окне выбора фрагмента кода он расположен в разделе Операционная система Windows > Очереди сообщений. Дополнительные сведения см. в разделе Практическое руководство. Вставка фрагментов в код (Visual Basic).
См. также
Задачи
Практическое руководство. Просмотр первого сообщения в очереди
Практическое руководство. Асинхронное получение сообщений
Практическое руководство. Создание экземпляров компонента MessageQueue
Практическое руководство. Назначение модуля форматирования для полученных сообщений