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


Практическое руководство. Использование очереди сообщений MSMQ в платформе .NET Compact Framework

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

Создание приложений .NET Compact Framework, использующих очередь сообщений (диспетчера MSMQ) аналогично процессу, используемому в платформе .NET Framework. Однако Windows CE не поддерживает все возможности, описанные в разделе MSMQ в платформе .NET Compact Framework.

В следующем коде показано, как создать очередь сообщений, отправить сообщение в очередь и получить сообщение из очереди на одном и том же устройстве. Сетевое подключение не требуется. Для создания объектов очереди сообщений используется простой класс Order.

В приводимых примерах предполагается, что на устройстве уже установлен компонент очереди сообщений. Дополнительные сведения о приобретении компонента очереди сообщений см. в разделе MSMQ в платформе .NET Compact Framework.

Определение класса Order

  • Добавьте в проект следующий класс.

    ' This class represents an object that
    ' is sent to and received from the queue.
    Public Class Order
        Dim ID As Integer
        Dim DTime As DateTime
        Public Property orderID() As Integer
            Get
                Return Me.ID
            End Get
            Set(ByVal value As Integer)
                Me.ID = value
            End Set
        End Property
        Public Property orderTime() As DateTime
            Get
                Return Me.DTime
            End Get
            Set(ByVal value As DateTime)
                Me.DTime = value
            End Set
        End Property
    End Class
    

Чтобы создать очередь сообщений, выполните следующие действия.

  • Добавьте следующий метод в форму.

    Private Sub CreateQueue()
        ' Determine whether the queue exists.
        If Not MessageQueue.Exists(QPath) Then
            Try
                ' Create the queue if it does not exist.
                myQ = MessageQueue.Create(QPath)
                MessageBox.Show("Queue Created")
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        Else
            MessageBox.Show("Queue Exists")
        End If
    End Sub
    

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

  • Добавьте следующий метод в форму.

    Private Sub SendMessageToQueue()
        ' Create a new order and set values.
        Dim sendOrder As New Order()
        sendOrder.orderID = 23123
        sendOrder.orderTime = DateTime.Now
        Try
            myQ.Send(sendOrder)
            MessageBox.Show("Message Sent")
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
    

Получение сообщения из очереди

  • Добавьте следующий метод в форму.

    Private Sub ReceiveMessageFromQueue()
        ' Connect to the a queue on the device.
        myQ = New MessageQueue(QPath)
    
        ' Set the formatter to indicate the body contains an Order.
        Dim targetTypes() As Type
        targetTypes = New Type() {GetType(Order)}
        myQ.Formatter = New XmlMessageFormatter(targetTypes)
        Try
            ' Receive and format the message. 
            Dim myMessage As Message = myQ.Receive()
            Dim myOrder As Order = CType(myMessage.Body, Order)
    
            ' Display message information.
            MessageBox.Show("Order ID: " & _
                myOrder.orderID.ToString() & _
                    Chr(10) & "Sent: " & myOrder.orderTime.ToString())
    
        Catch m As MessageQueueException
            ' Handle Message Queuing exceptions.
            MessageBox.Show(m.Message)
        Catch e As InvalidOperationException
            ' Handle invalid serialization format.
            MessageBox.Show(e.Message)
        End Try
    End Sub
    

Проверка работы очереди сообщений

  1. Добавьте кнопку в форму с именем Отправить, которая вызывает методы CreateQueue и SendMessageToQueue.

  2. Добавьте кнопку в форму с именем Получить, которая вызывает метод ReceiveMessageFromQueue.

Компиляция кода

Для этого примера требуются ссылки на следующие пространства имен:

См. также

Задачи

Пример MSMQ Book Order Application

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

MSMQ в платформе .NET Compact Framework

Разделы руководства по платформе .NET Compact Framework

Сведения об очередях сообщений и о технологии обмена сообщениями