Partager via


Comment : récupérer des messages

Mise à jour : novembre 2007

Vous pouvez recourir à des mécanismes de récupération statiques ou dynamiques pour récupérer une liste de messages. Lorsque vous récupérez une liste statique de messages, le système retourne un tableau d'objets Message représentant tous les messages de la file d'attente.

Lorsque vous récupérez une liste dynamique de messages, le système retourne un objet MessageEnumerator représentant tous les messages de la file d'attente. Un objet MessageEnumerator est un curseur initialisé en tête d'une liste dynamique. L'ordre de la liste est le même que celui des messages de la file d'attente, établi en fonction de la priorité des messages. Vous pouvez placer le curseur sur le premier message de la file d'attente en appelant la méthode MoveNext. Après que l'énumérateur a été initialisé, vous pouvez utiliser MoveNext pour accéder aux autres messages. Si vous souhaitez attendre jusqu'à l'arrivée d'un message, vous pouvez passer un délai d'attente dans la méthode MoveNext.

Dans la mesure où l'énumérateur est dynamique, il peut accéder à un message qui est ajouté plus loin dans la liste que la position actuelle du curseur (par exemple, en raison d'une priorité basse). En revanche, l'énumérateur ne peut accéder à un message inséré avant la position actuelle du curseur. Il est impossible de revenir en arrière avec MessageEnumerator. Un curseur autorise uniquement le déplacement vers l'avant. La méthode Reset vous permet de replacer le curseur au début de la file d'attente.

Remarque :

Si vous instanciez un MessageQueue avec DenySharedReceive ayant la valeur true, aucune autre application ne peut modifier les messages dans votre énumérateur tant que vous êtes connecté à la file d'attente.

Pour récupérer une liste statique de messages

  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.

    Remarque :

    Si vous avez créé votre composant à partir de l'Explorateur de serveurs, le chemin d'accès de cette file d'attente est automatiquement affecté à la propriété Path.

  2. Créez un tableau qui fait référence à la classe Message pour recueillir les résultats de votre requête.

  3. Appelez la méthode GetAllMessages.

  4. Assignez les résultats au tableau que vous avez créé.

    Le code ci-dessous montre comment vous pouvez utiliser la fonction GetAllMessages pour récupérer les messages d'une file d'attente et afficher les libellés des messages dans une zone de liste. Dans cet exemple, nous supposons qu'une instance du composant MessageQueue a été ajoutée à l'application.

    Private Sub button1_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles button1.Click
        Me.MessageQueue1.Path = ".\MyQueue"
        Dim msg() As System.Messaging.Message
        Dim i As Integer
        ' Retrieve the messages.
        msg = MessageQueue1.GetAllMessages()
        ' Clear the current contents of the list.
        Me.ListBox1.Items.Clear()
        ' Display the results.
        For i = 0 To msg.Length - 1
            Me.ListBox1.Items.Add(msg(i).Label)
        Next
    End Sub
    
     private void button1_Click(System.Object sender, System.EventArgs e)
        {
            messageQueue1.Path = ".\\MyQueue";
            System.Messaging.Message[] msg;
            // Retrieve the messages.
            msg = messageQueue1.GetAllMessages();
            // Clear the current contents of the list.
            this.listBox1.Items.Clear();
            // Display the results.
            for (int i = 0; i < msg.Length; i++)
            {
                this.listBox1.Items.Add(msg[i].Label);
            }
        }
    

    Cet exemple de code est également disponible sous forme d'extrait de code IntelliSense. 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).

Pour récupérer une liste dynamique de messages

  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.

    Remarque :

    Si vous avez créé votre composant à partir de l'Explorateur de serveurs, le chemin d'accès de cette file d'attente est automatiquement affecté à la propriété Path.

  2. Créez un objet MessageEnumerator destiné à recueillir les résultats de votre requête.

  3. Appelez la méthode GetEnumerator sur la classe MessageQueue.

  4. Assignez les résultats à l'objet MessageEnumerator. Votre code se présente comme suit :

    Dim mq As New System.Messaging.MessageQueue(".\MyQueue")
    Dim msgEnum As System.Messaging.MessageEnumerator
    msgEnum = CType(mq.GetMessageEnumerator2, System.Messaging.MessageEnumerator)
    
         System.Messaging.MessageQueue mq = new System.Messaging.MessageQueue();
            System.Messaging.MessageEnumerator msgEnum;
            mq.Path = @".\MyQueue";
            msgEnum = (System.Messaging.MessageEnumerator)(mq.GetMessageEnumerator2());
    
    

Voir aussi

Tâches

Comment : récupérer des files d'attente

Concepts

Collections de messages et de files d'attente