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


Пошаговое руководство. Создание очереди и работа с сообщениями

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

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

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

Для просмотра данных очередей в обозревателе серверов или для осуществления программного доступа к очередям необходимо установить на клиентском компьютере компонент Windows Очереди сообщений. Для добавления этой службы используйте средство панели управленияУстановка и удаление программ.

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

На вашем компьютере названия некоторых элементов интерфейса пользователя Visual Studio или их расположение могут отличаться от указанных в нижеследующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio.

Создание очереди сообщений на компьютере

  1. В меню Файл откройте команду Создать и выберите Проект.

  2. В диалоговом окне Новый проект создайте Приложение Windows на языке Visual Basic или Visual C#. Присвойте ему имя MessageQ.

  3. Откройте обозреватель серверов. Дополнительные сведения см. в разделе Практическое руководство. Подключение и инициализация обозревателя серверов/обозревателя баз данных.

  4. Разверните узел Серверы.

  5. Откройте узел, соответствующий локальному серверу. Узел локального сервера можно определить по имени компьютера.

  6. Откройте узел Очереди сообщений.

  7. Щелкните правой кнопкой мыши Частные очереди и выберите команду Создать очередь.

  8. В качестве имени очереди укажите HelpRequest. Не устанавливайте флажок Сделать очередь транзактной.

  9. В обозревателе серверов будет создана и отображена новая частная очередь с именем HelpRequest.

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

    Просмотреть новую очередь также можно с помощью значка Мой компьютер. Щелкните правой кнопкой мыши значок Мой компьютер на рабочем столе и выберите пункт Управление. Раскройте узел Службы и приложения. Откройте узел Очереди сообщений и выберите папку Частные очереди. В списке очередей будет присутствовать новая очередь.

Добавление компонента MessageQueue для очереди сообщений

  1. Перетащите очередь HelpRequest из обозревателя серверов на форму. В проект будет добавлен новый компонент MessageQueue, настроенный для работы с очередью HelpRequest.

    Компонент MessageQueue используется для программного доступа к сообщениям, содержащимся в очереди HelpRequest, которая была создана ранее.

  2. В свойстве (Name) компонента MessageQueue укажите helpRequestQueue.

  3. В окне Свойства разверните узел MessageReadPropertyFilter. Присвойте свойству Priority значение true. Это позволит получать приоритет сообщений при извлечении сообщений из очереди.

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

Создание пользовательского интерфейса

  1. Добавьте в Form1 следующие элементы управления со вкладки Windows Formsпанели элементов:

    • Два элемента управления Label;

    • Два элемента управления TextBox;

    • Три элемента управления Button;

    • Один элемент управления CheckBox;

    • Одно представление DataGridView.

  2. Задайте следующие свойства элементов управления:

    Элемент управления

    Свойство

    Новое значение

    Label1

    Text

    Имя

    Label2

    Text

    Сообщение

    TextBox1

    Name

    txtName

     

    Text

    (пусто)

    TextBox2

    Name

    txtMessage

     

    Text

    (пусто)

     

    Multiline

    true

    Button1

    Name

    sendMessage

     

    Text

    Отправить сообщение

    Button2

    Name

    refreshMessages

     

    Text

    Обновить список сообщений

    Button3

    Name

    purgeMessages

     

    Text

    Очистить список сообщений

    CheckBox1

    Name

    highPriority

     

    Text

    Высокоприоритетное сообщение

    DataGridView1

    Name

    messageGrid

  3. Упорядочьте элементы управления.

Отправка сообщения в очередь

  1. Дважды щелкните в конструкторе кнопку sendMessage, чтобы открыть в редакторе кода обработчик события Click.

  2. Добавьте в метод код, создающий и отправляющий в очередь новый экземпляр Message, а также обновляющий список сообщений. Код метода DisplayMessages будет написан позже.

    Private Sub sendMessage_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles sendMessage.Click
       Dim theMessage As System.Messaging.Message = _
          New System.Messaging.Message(Me.txtMessage.Text)
       theMessage.Label = Me.txtName.Text
       If highPriority.Checked Then
          theMessage.Priority = Messaging.MessagePriority.Highest
       Else
          theMessage.Priority = Messaging.MessagePriority.Normal
       End If
       helpRequestQueue.Send(theMessage)
       DisplayMessages()
    End Sub
    
    private void sendMessage_Click(object sender, System.EventArgs e)
    {
       System.Messaging.Message theMessage = 
          new System.Messaging.Message(txtMessage.Text);
       theMessage.Label = txtName.Text; 
       if (highPriority.Checked)
          theMessage.Priority = System.Messaging.MessagePriority.Highest;
       else
          theMessage.Priority = System.Messaging.MessagePriority.Normal;
       helpRequestQueue.Send(theMessage);
       DisplayMessages();
    }
    
  3. Добавьте в проект ссылку на пространство имен System.Data. Для ссылки на System.Data используется оператор Оператор Imports (пространство имен .NET и тип) (язык Visual Basic) или using (справочник по C#). Дополнительные сведения см. в разделах Управление ссылками и Практическое руководство. Добавление или удаление ссылок в Visual Studio (Visual Basic).

  4. Добавьте метод отображения содержимого очереди в представлении DataGridView. В этом методе для получения всех сообщений из очереди используется метод MessageQueue.GetAllMessages. Выбранные свойства очереди добавляются в объект DataTable, который используется в качестве источника данных для представления DataGridView. Для получения текста сообщения необходимо создать модуль форматирования.

    Private Sub DisplayMessages()
       ' Create a DataTable
       Dim messageTable As New DataTable()
       messageTable.Columns.Add("Name")
       messageTable.Columns.Add("Message")
       messageTable.Columns.Add("Priority")
       Dim messages() As System.Messaging.Message
       messages = helpRequestQueue.GetAllMessages()
       ' Need a formatter to get the text of the message body.
       Dim stringFormatter As System.Messaging.XmlMessageFormatter = _
          New System.Messaging.XmlMessageFormatter(New String() _
          {"System.String"})
       Dim index As Integer
       Dim am As System.Messaging.Message
       ' Add each message to the DataTable
       For index = 0 To messages.Length - 1
          messages(index).Formatter = stringFormatter
          am = messages(index)
          messageTable.Rows.Add(New String() _
             {am.Label, am.Body.ToString(), am.Priority.ToString()})
       Next
    
       messageGrid.DataSource = messageTable
    End Sub
    
    private void DisplayMessages()
    {
       DataTable messageTable = new DataTable();
       messageTable.Columns.Add("Name");
       messageTable.Columns.Add("Message");
       messageTable.Columns.Add("Priority");
       System.Messaging.Message[] messages;
       messages = helpRequestQueue.GetAllMessages();
       System.Messaging.XmlMessageFormatter stringFormatter;
       stringFormatter = new System.Messaging.XmlMessageFormatter(
          new string[] {"System.String"});
       for (int index = 0; index < messages.Length; index++) 
       {
          messages[index].Formatter = stringFormatter;
          messageTable.Rows.Add(new string[] {
             messages[index].Label,
             messages[index].Body.ToString(),
             messages[index].Priority.ToString() });
       }
       messageGrid.DataSource = messageTable;
    

    }

Отображение содержимого очереди

  1. Дважды щелкните в конструкторе кнопку refreshMessage, чтобы открыть в редакторе кода обработчик события Click.

  2. В обработчике событий Click вызовите метод DisplayMessages.

    Private Sub refreshMessages_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles refreshMessages.Click
       DisplayMessages()
    End Sub
    
    private void refreshMessages_Click(object sender, System.EventArgs e)
    {
       DisplayMessages();
    

    }

Очистка содержимого очереди

  1. Дважды щелкните в конструкторе кнопку purgeMessage, чтобы открыть в редакторе кода обработчик события Click.

  2. Вызовите метод Purge объекта helpRequestQueue и обновите содержимое представления DataGridView.

    Private Sub purgeMessages_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles purgeMessages.Click
       helpRequestQueue.Purge()
       DisplayMessages()
    End Sub
    
    private void purgeMessages_Click(object sender, System.EventArgs e)
    {
       helpRequestQueue.Purge();
       DisplayMessages();
    

    }

Тестирование приложения

  1. Нажмите клавишу F5 для запуска приложения.

  2. Введите имя и короткое сообщение.

  3. Нажмите кнопку Отправить сообщение, чтобы поставить сообщение в очередь и обновить список сообщений.

  4. Для удаления всех сообщений из очереди нажмите кнопку Очистить список сообщений. Список сообщений будет очищен.

См. также

Задачи

Практическое руководство. Создание очередей

Практическое руководство. Создание экземпляров компонента MessageQueue

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

Практическое руководство. Извлечение сообщений

Основные понятия

Знакомство с системой обмена сообщениями

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

Использование компонентов обмена сообщениями