Share via


Como: Recuperar mensagens

Você pode usar qualquer um dos mecanismos de recuperação estático ou dinâmico para recuperar uma lista de mensagens.Quando você recupera um estático lista de mensagens, o sistema retorna uma matriz de Message objetos que representam todas as mensagens na fila.

Quando você recupera uma lista dinâmica de mensagens, o sistema retorna um MessageEnumerator objeto que representa todas as mensagens na fila. A MessageEnumerator o objeto é um cursor, inicializado no início de uma lista dinâmica. A ordem da lista é igual a ordem das mensagens na fila de acordo com a prioridade da mensagem.Você pode mover o cursor para a primeira mensagem na fila chamando o MoveNext método. Depois que o enumerador foi inicializado, você pode usar MoveNext para percorrer encaminhar as mensagens remanescentes. Você pode especificar se deseja aguardar uma mensagem se torne disponível, passando um time limite para o MoveNext método.

Como o enumerador é dinâmico, ele pode acesso uma mensagem que é acrescentada além da posição corrente do cursor (por exemplo, devido a baixa prioridade).O enumerador não é possível acessar uma mensagem será inserida antes da posição corrente do cursor.Não é possível retroceder uma etapa com um MessageEnumerator. Um cursor permite a movimentação, encaminhar-only.The Reset método permite que você coloque o cursor novamente no início da fila.

Observação:

Se você instancia um MessageQueue com DenySharedReceive conjunto para true, nenhum Outros aplicativo pode modificar as mensagens em seu enumerador enquanto a conexão com a fila.

Para recuperar uma lista estática de mensagens

  1. Criar uma instância do MessageQueue componente e conjunto seus Path propriedade para a fila à qual deseja fazer referência. Para obter mais informações, consulte Como: Criar instâncias de componentes do MessageQueue.

    Observação:

    Se você tiver criado seu componente de Gerenciador de servidores, the Path propriedade é definida automaticamente para o caminho da fila para essa fila.

  2. Criar uma matriz que faz referência a Message classe para manter os resultados da consulta.

  3. Chame o método GetAllMessages.

  4. Atribua os resultados para a matriz que você criou.

    O código a seguir mostra como você pode usar o GetAllMessages função para recuperar as mensagens de uma fila e exibir os rótulos de mensagem em uma caixa de listagem. Este exemplo assume que um MessageQueue instância do componente foi adicionada ao aplicativo.

    Private Sub button1_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles button1.Click
        Me.MessageQueue1.Path = ".\MyQueue"
        Dim msg() As System.Messaging.Message
        Dim i As Integer
        ' Retrieve the messages.
        msg = MessageQueue1.GetAllMessages()
        ' Clear the current contents of the list.
        Me.ListBox1.Items.Clear()
        ' Display the results.
        For i = 0 To msg.Length - 1
            Me.ListBox1.Items.Add(msg(i).Label)
        Next
    End Sub
    
     private void button1_Click(System.Object sender, System.EventArgs e)
        {
            messageQueue1.Path = ".\\MyQueue";
            System.Messaging.Message[] msg;
            // Retrieve the messages.
            msg = messageQueue1.GetAllMessages();
            // Clear the current contents of the list.
            this.listBox1.Items.Clear();
            // Display the results.
            for (int i = 0; i < msg.Length; i++)
            {
                this.listBox1.Items.Add(msg[i].Label);
            }
        }
    

    Este exemplo de código também está disponível como um trecho de código IntelliSense.No selecionador de trecho de código, ele está localizado em Windows Brazilian OS > filas de mensagens.Para obter mais informações, consulte Como: Inserir trechos em seu Código (Visual Basic).

Para recuperar uma lista dinâmica de mensagens

  1. Criar uma instância do MessageQueue componente e conjunto seus Path propriedade para a fila à qual deseja fazer referência. Para obter mais informações, consulte Como: Criar instâncias de componentes do MessageQueue.

    Observação:

    Se você tiver criado seu componente de Gerenciador de servidores, the Path propriedade é definida automaticamente para o caminho da fila para essa fila.

  2. Criar um MessageEnumerator objeto para manter os resultados da consulta.

  3. Chamar o GetEnumerator método na MessageQueue classe.

  4. Atribuir os resultados para o MessageEnumerator objeto. Seu código pode ter esta aparência:

    Dim mq As New System.Messaging.MessageQueue(".\MyQueue")
    Dim msgEnum As System.Messaging.MessageEnumerator
    msgEnum = CType(mq.GetMessageEnumerator2, System.Messaging.MessageEnumerator)
    
         System.Messaging.MessageQueue mq = new System.Messaging.MessageQueue();
            System.Messaging.MessageEnumerator msgEnum;
            mq.Path = @".\MyQueue";
            msgEnum = (System.Messaging.MessageEnumerator)(mq.GetMessageEnumerator2());
    
    

Consulte também

Tarefas

Como: Recuperar filas

Conceitos

Coleções de mensagem e fila