Compartir a través de


Cómo: Recuperar colas

Actualización: noviembre 2007

Puede utilizar mecanismos estáticos o dinámicos de recuperación para recuperar una lista de colas. Cuando se recupera una lista estática de colas, el sistema devuelve un objeto MessageQueue con los resultados de la consulta. Cuando se recupera una lista dinámica de colas, el sistema devuelve un objeto MessageQueueEnumerator con los resultados de la consulta.

A diferencia de la clase MessageEnumerator, que devuelve mensajes de acuerdo con el orden que ocupan en una cola, la clase MessageQueueEnumerator no devuelve las colas en ningún orden en particular. Esto se debe a que las colas de una red no se definen en orden, es decir, no se ordenan por equipo, por etiqueta ni por ningún otro criterio al que tenga acceso el usuario. Para desplazar el cursor hasta la primera cola de la enumeración, puede llamar al método MoveNext. Una vez inicializado el enumerador, puede utilizar MoveNext para desplazarse hacia delante por las restantes colas.

No se puede retroceder con una clase MessageQueueEnumerator. Un cursor sólo permite desplazarse hacia delante por la enumeración de colas. No obstante, puede llamar al método Reset para reiniciar la enumeración y situar de nuevo el cursor al principio de la lista. Como el enumerador es dinámico, puede tener acceso a una cola anexada más allá de la posición actual del cursor. No se puede tener acceso a una cola insertada delante de la posición actual del cursor sin llamar primero a Reset.

Como los métodos GetPublicQueues, GetPrivateQueuesByMachine y GetMessageQueueEnumerator son estáticos, no necesita crear una instancia de la clase MessageQueue antes de llamar al método.

Para recuperar una lista estática de colas públicas o privadas

  1. Cree una matriz de tipo MessageQueue para que contenga los resultados de la consulta.

  2. Llame al método apropiado de la clase MessageQueue.

    • Para recuperar todas las colas públicas sin especificar criterios, llame al método GetPublicQueues.

    • Para recuperar colas públicas con criterios, establezca el parámetro Criteria en el valor adecuado y llame al método GetPrivateQueuesByMachine.

    • Para recuperar sólo las colas públicas que compartan un identificador GUID de categoría, llame al método GetPublicQueuesByCategory y especifique el identificador GUID de categoría como parámetro.

    • Para recuperar sólo las colas públicas que compartan una etiqueta, llame al método GetPublicQueuesByLabel y especifique la etiqueta como parámetro.

    • Para recuperar sólo las colas públicas de un equipo concreto, llame al método GetPublicQueuesByMachine y especifique el nombre del equipo como parámetro.

  3. Asigne los resultados a la matriz.

    Por ejemplo, el código siguiente muestra cómo puede utilizarse un cuadro de lista para mostrar la etiqueta de todas las colas públicas recuperadas en el equipo local:

    Private Sub button1_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles button1.Click
        Dim mqlist() As System.Messaging.MessageQueue
        Dim i As Integer
        ' Retrieve queues on the local machine.
        mqlist = System.Messaging.MessageQueue.GetPublicQueuesByMachine(".")
        ' Clear the current contents of the list.
        Me.ListBox1.Items.Clear()
        ' Display the results.
        For i = 0 To mqlist.Length - 1
            Me.ListBox1.Items.Add(mqlist(i).Path)
        Next
    End Sub
    
     private void button1_Click(System.Object sender, System.EventArgs e)
        {
            System.Messaging.MessageQueue[] mqlist;
            // Retrieve public queues.
            mqlist = System.Messaging.MessageQueue.GetPublicQueuesByMachine(
               ".");
            // Clear the current contents of the list.
            this.listBox1.Items.Clear();
            // Display the results.
            for (int i = 0; i < mqlist.Length; i++)
            {
                this.listBox1.Items.Add(mqlist[i].Path);
            }
        }
    

    Este ejemplo de código también está disponible como un fragmento de código de IntelliSense Visual Basic. En el selector de fragmentos de código, se encuentra en Sistema operativo Windows > Colas de mensajes. Para obtener más información, vea Cómo: Insertar fragmentos de código en el código (Visual Basic).

Para recuperar una lista dinámica de colas

  1. Cree un objeto MessageQueueEnumerator para que contenga los resultados de la consulta.

  2. Llame al método GetMessageQueueEnumerator de la clase MessageQueue.

  3. Para recuperar un subconjunto de las colas de la red, establezca el parámetro MessageQueueCriteria en el valor adecuado.

  4. Establezca los resultados en el objeto MessageQueueEnumerator que ha creado. El código podría tener el siguiente aspecto:

    Dim mqEnum As System.Messaging.MessageQueueEnumerator
    mqEnum = System.Messaging.MessageQueue.GetMessageQueueEnumerator()
    
         System.Messaging.MessageQueueEnumerator mqEnum;
            mqEnum = System.Messaging.MessageQueue.GetMessageQueueEnumerator();
    

Vea también

Tareas

Cómo: Recuperar mensajes

Conceptos

Colecciones de mensajes y colas