Compartir a través de


Tutorial: Crear una cola y trabajar con mensajes

Actualización: noviembre 2007

Los procedimientos de este tema muestran el proceso de creación de una cola de mensajes mediante el componente MessageQueue. Mediante ese componente, puede enviar mensajes a la cola y recuperarlos de ella. Los mensajes registran solicitudes de ayuda.

Nota:

Para ver información sobre colas en el Explorador de servidores o para obtener acceso a las colas mediante programación, debe instalar el componente de Windows Servicios de Message Queue Server en el equipo cliente. Para agregar este servicio, use Agregar o quitar programas en el Panel de control.

Nota:

Es posible que su equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio incluidos en las instrucciones siguientes. La edición de Visual Studio que se tenga y la configuración que se utilice determinan estos elementos. Para obtener más información, vea Valores de configuración de Visual Studio.

Para crear una cola de mensajes en el equipo

  1. En el menú Archivo, elija Nuevo y haga clic en Proyecto.

  2. En el cuadro de diálogo Nuevo proyecto, cree una Aplicación para Windows de Visual Basic o Visual C#. Asígnele el nombre MessageQ.

  3. Abra el Explorador de servidores. Para obtener más información, vea Cómo: Tener acceso e inicializar el Explorador de servidores o el Explorador de bases de datos.

  4. Expanda el nodo Servidores.

  5. Expanda el nodo del servidor local. El nodo de este servidor se identifica mediante el nombre del equipo.

  6. Expanda el nodo Colas de mensajes.

  7. Haga clic con el botón secundario en Colas privadas y, a continuación, haga clic en Crear cola.

  8. Escriba HelpRequest como nombre para la cola. No seleccione Crear transaccional.

  9. Se crea una nueva cola privada denominada HelpRequest que aparece en el Explorador de servidores.

    Nota:

    También puede ver la cola recién creada mediante el icono Mi PC. Haga clic con el botón secundario en el icono Mi PC del escritorio y, a continuación, haga clic en Administrar. Expanda el nodo Servicios y Aplicaciones. Expanda el nodo Message Queue Server y seleccione la carpeta Colas privadas. La nueva cola aparece en la lista de colas.

Para agregar un componente MessageQueue para la cola de mensajes

  1. Arrastre la cola HelpRequest desde el Explorador de servidores hasta el formulario. Se agregará al proyecto un nuevo componente MessageQueue configurado para la cola HelpRequest.

    El componente MessageQueue se utiliza para obtener acceso mediante programación a los mensajes contenidos en la cola HelpRequest creada en la sección anterior.

  2. Asigne a la propiedad (Name) del componente MessageQueue el valor helpRequestQueue.

  3. En la ventana Propiedades, expanda el nodo MessageReadPropertyFilter. Asigne a la propiedad Priority el valor true. Esto hace que se recupere la prioridad del mensaje al recuperar un mensaje de la cola.

    La interfaz de usuario que se va a crear en el siguiente procedimiento permite al usuario escribir texto para una solicitud de ayuda y establecer la prioridad del mensaje. El usuario hace clic en un botón Send (Enviar) para enviar la solicitud a la cola. Un control DataGridView muestra el contenido de la cola. La interfaz de usuario también incluye botones para actualizar la cuadrícula con el contenido actual de la cola y para vaciar la cola.

Para crear la interfaz de usuario

  1. En la ficha Windows Forms del Cuadro de herramientas, agregue los siguientes controles a Form1:

  2. Defina las siguientes propiedades de los controles:

    Control

    Propiedad

    Valor nuevo

    Label1

    Text

    Name

    Label2

    Text

    Message

    TextBox1

    Name

    txtName

     

    Text

    (En blanco)

    TextBox2

    Name

    txtMessage

     

    Text

    (En blanco)

     

    Multiline

    true

    Button1

    Name

    sendMessage

     

    Text

    Enviar mensaje

    Button2

    Name

    refreshMessages

     

    Text

    Actualizar lista de mensajes

    Button3

    Name

    purgeMessages

     

    Text

    Eliminar mensajes

    CheckBox1

    Name

    highPriority

     

    Text

    Prioridad alta

    DataGridView1

    Name

    messageGrid

  3. Organice los controles de forma ordenada.

Para enviar un mensaje a la cola

  1. En el diseñador, haga doble clic en el botón sendMessage para crear el controlador de eventos Click en el Editor de código.

  2. Agregue código al método para crear una nueva instancia del objeto Message y enviarla a la cola, y actualizar la vista del mensaje. En el siguiente paso, escribirá el método 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. Agregue una referencia a System.Data al proyecto. Agregue una instrucción Instrucción Imports (Tipo y espacio de nombres de .NET) (Visual Basic) o una instrucción using (Referencia de C#) para System.Data. Para obtener más información, vea Administrar referencias y Cómo: Agregar o quitar referencias en Visual Studio (Visual Basic).

  4. Agregue un método para mostrar el contenido de la cola en el control DataGridView. Este método utiliza el método MessageQueue.GetAllMessages para recuperar todos los mensajes de la cola. Las propiedades seleccionadas de la cola se agregan a un objeto DataTable, que se utiliza como origen de datos para el control DataGridView. Para recuperar el texto del mensaje, deberá crear un formateador para el mensaje.

    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;
    

    }

Para mostrar el contenido de la cola

  1. En el diseñador, haga doble clic en el botón refreshMessage para crear el controlador de eventos Click en el Editor de código.

  2. Dentro del controlador de eventos Click, llame al método 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();
    

    }

Para borrar el contenido de la cola

  1. En el diseñador, haga doble clic en el botón purgeMessage para crear el controlador de eventos Click en el Editor de código.

  2. Llame al método Purge de helpRequestQueue y actualice el contenido del control 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();
    

    }

Para probar la aplicación

  1. Presione F5 para ejecutar la aplicación.

  2. Escriba su nombre y un mensaje breve.

  3. Haga clic en Enviar mensaje para enviar el mensaje a la cola y actualizar la presentación en pantalla.

  4. Haga clic en Purgar mensajes para eliminar todos los mensajes de la cola. La lista de mensajes aparecerá vacía.

Vea también

Tareas

Cómo: Crear colas

Cómo: Crear instancias de componentes MessageQueue

Cómo: Enviar mensajes simples

Cómo: Recuperar mensajes

Conceptos

Introducción a la mensajería

Otros recursos

Utilizar componentes de mensajería