Share via


Cómo: Recibir mensajes mediante programación

Actualización: noviembre 2007

Puede utilizar un método sincrónico denominado Receive para ver el contenido de una cola. Cuando se llama al método Receive en una cola, el sistema quita el primer mensaje de la cola y lo devuelve. Este mensaje deja de estar disponible para los demás componentes que examinan la cola.

Nota:

También puede ver el primer mensaje de una cola sin quitarlo de la misma. Para obtener más información, vea Cómo: Ejecutar el método Peek en los mensajes. También puede recibir mensajes de forma asincrónica. Para obtener más información, vea Cómo: Recibir mensajes de forma asincrónica.

Si no hay mensajes en la cola al llamar al método Receive, el método esperará hasta que llegue un mensaje a la cola. 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.

Cuando se leen mensajes de una cola, se utiliza un objeto formateador para serializar y deserializar el contenido del mensaje mientras se manipula. Para obtener más información, vea Introducción a la lectura y recuperación de mensajes.

Existen varias formas del método Receive:

  • El método básico con varias sobrecargas que permiten especificar elementos como períodos de tiempo de espera

  • Un método llamado ReceiveById que permite recuperar un mensaje determinado por su identificador.

  • Un método llamado ReceiveByCorrelationId que permite recuperar un mensaje por su identificador de correlación.

Para obtener una explicación sobre los identificadores de correlación, vea Almacenamiento en el diario de la cola de mensajes.

Para recibir un mensaje mediante programación

  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. Especifique el formateador que desee utilizar para recuperar el mensaje. Para obtener más información, vea Cómo: Especificar un formateador para los mensajes recuperados.

  3. Cree una instancia del objeto Message para que contenga el mensaje recuperado.

  4. Llame al método Receive para quitar el mensaje de la cola.

    Sugerencia:

    Para especificar un tiempo de espera para el método Receive, utilice un objeto TimeSpan y especifique el período de tiempo durante el cual debe esperar el método.

    Dim mq As New System.Messaging.MessageQueue(".\MyQueue")
    mq.Send("1", "1")
    Dim m As System.Messaging.Message
    m = mq.Receive(New TimeSpan(0, 0, 3))
    m.Formatter = New _
       System.Messaging.XmlMessageFormatter(New String() _
       {"System.String,mscorlib"})
    Console.WriteLine(m.Body)
    
         System.Messaging.MessageQueue mq =
               new System.Messaging.MessageQueue(".\\MyQueue");
            mq.Send("1", "1");
            System.Messaging.Message m = mq.Receive(new TimeSpan(0, 0, 3));
            m.Formatter = new System.Messaging.XmlMessageFormatter(new string[] { "System.String,mscorlib" });
            Console.WriteLine(m.Body);
    

    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).

Vea también

Tareas

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

Cómo: Recibir mensajes de forma asincrónica

Cómo: Crear instancias de componentes MessageQueue

Cómo: Especificar un formateador para los mensajes recuperados

Otros recursos

Leer y recibir mensajes