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
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.
Criar uma instância do Message objeto para armazenar os dados que o Peek método copia da fila.
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