Condividi tramite


Procedura: ricevere messaggi a livello di codice

Aggiornamento: novembre 2007

È possibile utilizzare il metodo sincrono Receive per visualizzare il contenuto di una coda. Quando si effettua la chiamata al metodo Receive di una coda, il primo messaggio viene rimosso dalla coda e restituito all'utente. Questo messaggio non sarà più disponibile per gli altri componenti in cui viene esaminata la coda.

Nota:

È anche possibile visualizzare il primo messaggio di una coda senza rimuoverlo da quest'ultima. Per ulteriori informazioni, vedere Procedura: visualizzare i messaggi. È inoltre possibile ricevere i messaggi in modo asincrono. Per ulteriori informazioni, vedere Procedura: ricevere messaggi in modo asincrono.

Se nella coda non è disponibile alcun messaggio quando si effettua la chiamata al metodo Receive, quest'ultimo dovrà attendere l'arrivo di un messaggio nella coda. Se si desidera specificare l’intervallo di attesa del metodo, sarà possibile indicare il periodo di timeout. Il periodo di timeout viene specificato come oggetto TimeSpan.

Durante la lettura di messaggi da una coda, viene utilizzato un oggetto formattatore per la serializzazione e la deserializzazione del contenuto del messaggio quando quest'ultimo viene modificato. Per ulteriori informazioni, vedere Introduzione alla lettura e al recupero di messaggi.

Esistono numerosi formati del metodo Receive.

  • Il metodo base con diversi overload che consentono di specificare informazioni quali i periodi di timeout.

  • Un metodo denominato ReceiveById che consente di recuperare uno specifico messaggio in base al relativo identificatore.

  • Un metodo denominato ReceiveByCorrelationId che consente di recuperare un messaggio in base all'ID di correlazione.

Per informazioni sugli ID di correlazione, vedere Archiviazione delle code diario di messaggi.

Per ricevere un messaggio a livello di codice

  1. Creare un'istanza del componente MessageQueue e impostarne la proprietà Path sulla coda a cui si desidera fare riferimento. Per ulteriori informazioni, vedere Procedura: creare istanze del componente MessageQueue.

  2. Specificare il formattatore da utilizzare per il recupero del messaggio. Per ulteriori informazioni, vedere Procedura: specificare il formattatore per i messaggi recuperati.

  3. Creare un'istanza dell'oggetto Message che contenga il messaggio recuperato.

  4. Chiamare il metodo Receive per rimuovere il messaggio dalla coda.

    Suggerimento:

    Per specificare un timeout per il metodo Receive, utilizzare un oggetto TimeSpan per impostare il tempo di attesa desiderato per il metodo.

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

    Questo esempio di codice è disponibile anche come frammento di codice IntelliSense di Visual Basic ed è presente nella casella di selezione dei frammenti di codice in Sistema operativo Windows > Code messaggi. Per ulteriori informazioni, vedere Procedura: inserire frammenti nel codice (Visual Basic).

Vedere anche

Attività

Procedura: visualizzare i messaggi

Procedura: ricevere messaggi in modo asincrono

Procedura: creare istanze del componente MessageQueue

Procedura: specificare il formattatore per i messaggi recuperati

Altre risorse

Lettura e ricezione di messaggi