Partager via


Comment : recevoir des messages par programme

Mise à jour : novembre 2007

Vous pouvez utiliser une méthode synchrone appelée Receive pour examiner le contenu d'une file d'attente. Lorsque vous appelez la méthode Receive sur une file d'attente, le système supprime le premier message de la file d'attente et vous le retourne. Ce message n'est plus disponible pour les autres composants qui examinent la file d'attente.

Remarque :

Vous pouvez également examiner le premier message d'une file d'attente sans le supprimer. Pour plus d'informations, consultez Comment : lire des messages. Vous pouvez également recevoir des messages de façon asynchrone. Pour plus d'informations, consultez Comment : recevoir des messages de manière asynchrone.

S'il n'y a plus de messages disponibles dans la file d'attente lorsque vous appelez la méthode Receive, celle-ci attend jusqu'à ce qu'un message arrive dans la file d'attente. Vous pouvez spécifier un délai d'attente si vous souhaitez que la méthode attende uniquement pendant un intervalle spécifié. Le délai d'attente est spécifié en tant qu'objet TimeSpan.

Lorsque vous lisez un message dans une file d'attente, l'objet formatter sert à sérialiser et désérialiser le contenu du message lors de sa manipulation. Pour plus d'informations, consultez Introduction à la lecture et à la récupération de messages.

La méthode Receive existe sous plusieurs formes :

  • la méthode de base avec plusieurs surcharges qui vous permettent de spécifier divers éléments tels que des délais d'attente ;

  • une méthode appelée ReceiveById qui sert à récupérer un message particulier par son identificateur ;

  • une méthode appelée ReceiveByCorrelationId qui vous permet de récupérer un message par son ID de corrélation.

Pour obtenir une explication sur les ID de corrélation, consultez Journalisation des files d'attente de messages.

Pour recevoir un message par programme

  1. Créez une instance du composant MessageQueue et affectez à sa propriété Path la file d'attente à laquelle vous voulez faire référence. Pour plus d'informations, consultez Comment : créer des instances du composant MessageQueue.

  2. Spécifiez le formateur à utiliser pour récupérer votre message. Pour plus d'informations, consultez Comment : spécifier le formateur pour les messages récupérés.

  3. Créez une instance de l'objet Message pour rendre persistant le message récupéré.

  4. Appelez la méthode Receive pour supprimer le message de la file d'attente.

    Conseil :

    Pour spécifier un délai d'attente pour la méthode Receive, utilisez un objet TimeSpan afin de définir le délai pendant lequel la méthode doit attendre.

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

    Cet exemple de code est également disponible sous forme d'extrait de code IntelliSense Visual Basic. Dans le sélecteur d'extraits de code, il se trouve dans Système d'exploitation Windows > Files d'attente de messages. Pour plus d'informations, consultez Comment : insérer des extraits de code dans votre code (Visual Basic).

Voir aussi

Tâches

Comment : lire des messages

Comment : recevoir des messages de manière asynchrone

Comment : créer des instances du composant MessageQueue

Comment : spécifier le formateur pour les messages récupérés

Autres ressources

Lecture et réception de messages