Cómo: Utilizar MSMQ en .NET Compact Framework

Actualización: noviembre 2007

El proceso de creación de aplicaciones de .NET Compact Framework que utilizan Message Queue Server (conocido también como MSMQ) es parecido al proceso que se utiliza en .NET Framework. Sin embargo, Windows CE no admite todas las características descritas en MSMQ en .NET Compact Framework.

En los códigos de ejemplo siguientes se muestra cómo crear una cola de mensajes, enviar un mensaje a la cola y recibir un mensaje desde ésta, y todo ello en el mismo dispositivo. No se requiere ninguna conectividad de red. Se utiliza una clase simple, Order, para crear los objetos de Message Queue Server.

En estos ejemplos se supone que se ha instalado Message Queue Server en el dispositivo. Para obtener más información sobre cómo obtener el componente Message Queuing, vea MSMQ en .NET Compact Framework.

Para definir la clase Order

  • Agregue la clase siguiente al proyecto.

    ' 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
    

Para crear la cola de mensajes

  • Agregue el método siguiente al formulario.

    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
    

Para enviar un mensaje a la cola

  • Agregue el método siguiente al formulario.

    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
    

Para recibir el mensaje desde la cola

  • Agregue el método siguiente al formulario.

    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
    

Para probar la cola de mensajes

  1. Agregue un botón al formulario, con la etiqueta Enviar, que llame a los métodos CreateQueue y SendMessageToQueue.

  2. Agregue un botón al formulario, con la etiqueta Recibir, que llame al método ReceiveMessageFromQueue.

Compilar el código

Para este ejemplo se requieren referencias a los siguientes espacios de nombres:

Vea también

Tareas

Ejemplo MSMQ Book Order Application

Conceptos

MSMQ en .NET Compact Framework

.Temas "Cómo..." de .NET Compact Framework

Información básica sobre colas de mensajes y tecnología de mensajería