Compartilhar via


Como: Inspecionar mensagens

Você pode usar o Peek método para examinar a primeira mensagem em qualquer fila sem remover a mensagem da fila. Isso permite que seu componente para obter informações a partir da fila sem impedir que outros aplicativos ou componentes de recuperação de mensagens que eles foram projetados para processar.

Observação:

Peek permite que você veja apenas a primeira mensagem na fila. Porque essa mensagem não é removida da fila quando você inspecioná-lo, você não pode, em seguida, inspecionar mensagens subseqüentes.Se você deseja ver todas as mensagens na fila sem removê-los da fila, você pode usar o GetAllMessages método ou a GetMessageEnumerator método. Para obter mais informações, consulte Coleções de mensagem e fila.

Se não houver nenhum mensagens na fila quando você telefonar o Peek método, o método espera até que uma mensagem chega. Você pode especificar um período de time limite se desejar que o método para um determinado período de time de espera.O período de time limite é especificado sistema autônomo um TimeSpan objeto. Normalmente, o período de time limite será conjunto para seja zero, caso em que ele verifica uma mensagem e não espera até que todo ou para a padrão infinita conjunto seletiva, que aguarda indefinidamente.Você definiria isso no código usando a seguinte sintaxe:

msg.TimeToBeReceived = System.Messaging.Message.InfiniteTimeout
     msg.TimeToBeReceived = System.Messaging.Message.InfiniteTimeout;
msg.set_TimeToBeReceived(System.Messaging.Message.InfiniteTimeout);

Você também pode conjunto isso no Propriedades janela definindo o TimeToBeReceived propriedade.

Dica:

Ao usar clientes dependentes, certifique-se de que o relógio no computador cliente está sincronizado com o relógio do servidor que esteja executando o enfileirar de mensagens de.Caso contrário, um comportamento imprevisível pode resultar ao enviar uma mensagem e cujo TimeToBeReceived propriedade não é InfiniteTimeout .

Inspecionar pode ser síncrono ou assíncrono.Para obter mais informações, consulte Como: Receber mensagens de forma assíncrona.

Para inspecionar sincronamente 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.

  2. Criar uma instância do Message objeto para armazenar os dados que o Peek método copia da fila.

  3. telefonar the Peek método para obter dados sobre a primeira mensagem na fila. Opcionalmente, para especificar um time limite de Peek método, digite o comprimento de time (sistema autônomo um TimeSpan objeto) que você deseja que o método de espera sistema autônomo um argumento do método.

    Por exemplo, o código a seguir mostra como você pode usar o Peek método para retornar e exibir informações sobre a primeira mensagem em uma fila.

    Public Sub LookFirstMessage()
        Dim NewQueue As New System.Messaging.MessageQueue(".\MyQueue")
        Dim FirstMessage As System.Messaging.Message
        FirstMessage = NewQueue.Peek
        Dim targetNames() As String = {"System.String,mscorlib"}
        FirstMessage.Formatter = _
           New System.Messaging.XmlMessageFormatter(targetNames)
        Dim label As String = CStr(FirstMessage.Label)
    End Sub
    
     public void LookFirstMessage()
        {
            System.Messaging.MessageQueue newQueue =
               new System.Messaging.MessageQueue(".\\MyQueue");
            System.Messaging.Message firstMessage;
            string[] types = { "System.String,mscorlib" };
            firstMessage = newQueue.Peek();
            firstMessage.Formatter =
               new System.Messaging.XmlMessageFormatter(types);
            string label = firstMessage.Label.ToString();
        }
    

Consulte também

Tarefas

Como: Receber mensagens por programação

Como: Criar instâncias de componentes do MessageQueue

Outros recursos

Lendo e recebendo mensagens