Поделиться через


Практическое руководство. Получение сообщений программным способом

Обновлен: Ноябрь 2007

Синхронный метод под названием Receive может использоваться для просмотра содержимого очереди. При вызове метода Receive для очереди система извлекает из очереди первое сообщение и доставляет его пользователю. Это сообщение становится недоступным для других компонентов, имеющих доступ к очереди.

k9yhx48a.alert_note(ru-ru,VS.90).gifПримечание.

Просмотреть первое сообщение в очереди также можно без его извлечения из очереди. Дополнительные сведения см. в разделе Практическое руководство. Просмотр первого сообщения в очереди. Сообщения <]также можно получать асинхронно. Дополнительные сведения см. в разделе Практическое руководство. Асинхронное получение сообщений.

Если при вызове метода Receive в очереди нет доступных сообщений, метод ожидает появления сообщения в очереди. Для ограничения срока ожидания для метода можно установить период ожидания. Период ожидания задается в виде объекта TimeSpan.

При чтении сообщений из очереди объект модуля форматирования используется для сериализации и десериализации содержания сообщения в ходе его обработки. Дополнительные сведения см. в разделе Знакомство с чтением и получением сообщений.

Метод Receive имеет несколько форм:

  • Базовый метод с несколькими перегрузками, позволяющий задать такие параметры, как периоды ожидания.

  • Метод под названием ReceiveById, позволяющий извлечь определенное сообщение по его идентификатору.

  • Метод под названием ReceiveByCorrelationId, позволяющий извлечь сообщение по его корреляционному идентификатору.

Сведения о корреляционных идентификаторах см. в разделе Хранение очереди сообщений в журнале.

Получение сообщения программными средствами

  1. Создайте экземпляр компонента MessageQueue и задайте в качестве значения свойства Path очередь, на которую необходимо сослаться. Дополнительные сведения см. в разделе Практическое руководство. Создание экземпляров компонента MessageQueue.

  2. Укажите модуль форматирования, который следует использовать для извлечения сообщения. Дополнительные сведения см. в разделе Практическое руководство. Назначение модуля форматирования для полученных сообщений.

  3. Создайте экземпляр объекта Message для хранения полученного сообщения.

  4. Вызовите метод Receive для удаления сообщения из очереди.

    k9yhx48a.alert_note(ru-ru,VS.90).gifСовет.

    Чтобы задать период ожидания для метода 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

Практическое руководство. Назначение модуля форматирования для полученных сообщений

Другие ресурсы

Чтение и получение сообщений