Share via


Cómo: Ejecutar el método Peek en los mensajes

Actualización: noviembre 2007

Puede utilizar el método Peek para ver el primer mensaje de una cola sin quitarlo de la misma. Esto permite que el componente obtenga información de la cola sin impedir que otras aplicaciones u otros componentes recuperen los mensajes que deban procesar.

Nota:

El método Peek sólo permite ver el primer mensaje de la cola. Dado que el mensaje no se quita de la cola al examinarlo, no podrá examinar los mensajes subsiguientes. Si desea ver todos los mensajes de una cola sin quitarlos de la misma, puede utilizar los métodos GetAllMessages o GetMessageEnumerator. Para obtener más información, vea Colecciones de mensajes y colas.

Si no hay mensajes en la cola cuando se llama al método Peek, el método esperará hasta que llegue un mensaje. Puede especificar un tiempo de espera si desea que el método espere sólo durante un período de tiempo especificado. El período de tiempo de espera se especifica como un objeto TimeSpan. Lo más habitual es que el período de tiempo de espera se establezca en cero, en cuyo caso se comprueba si hay un mensaje y no se produce espera, o se establezca en el valor predeterminado infinito, con lo que la espera es indefinida. Para establecer un período de tiempo de espera infinito en el código se puede utilizar la sintaxis siguiente:

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

También puede definirlo en la ventana Propiedades mediante la propiedad TimeToBeReceived.

Sugerencia:

Cuando utilice clientes dependientes, asegúrese de que el reloj del equipo cliente está sincronizado con el reloj del servidor en el que se ejecuta Message Queue Server. De lo contrario, el comportamiento podría ser impredecible al enviar un mensaje cuya propiedad TimeToBeReceived no sea InfiniteTimeout.

La ejecución del método Peek puede ser sincrónica o asincrónica. Para obtener más información, vea Cómo: Recibir mensajes de forma asincrónica.

Para ejecutar el método Peek en los mensajes de forma sincrónica

  1. Cree una instancia del componente MessageQueue y establezca su propiedad Path en la cola a la que se desea hacer referencia. Para obtener más información, vea Cómo: Crear instancias de componentes MessageQueue.

  2. Cree una instancia del objeto Message para que almacene los datos que el método Peek copiará de la cola.

  3. Llame al método Peek para obtener datos sobre el primer mensaje de la cola. Si lo desea, para especificar un tiempo de espera para el método Peek, escriba el período de tiempo (como un objeto TimeSpan) durante el cual el método debe esperar, en forma de argumento del método.

    Por ejemplo, el código siguiente muestra cómo se utiliza el método Peek para devolver y mostrar información sobre el primer mensaje de una cola.

    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();
        }
    

Vea también

Tareas

Cómo: Recibir mensajes mediante programación

Cómo: Crear instancias de componentes MessageQueue

Otros recursos

Leer y recibir mensajes