Share via


Procédure pas à pas : création d'une file d'attente et utilisation des messages

Mise à jour : novembre 2007

Les procédures de cette rubrique décrivent le processus de création d'une file d'attente de messages à l'aide du composant MessageQueue. Vous pouvez utiliser ce composant pour envoyer des messages vers la file d'attente et en récupérer. Les messages consignent des demandes d'aide.

Remarque :

Pour consulter des informations de files d'attente dans l'Explorateur de serveurs ou accéder à des files d'attente par programme, vous devez installer le composant Windows Message Queuing sur l'ordinateur client. Pour ajouter ce service, utilisez l'outil Ajout/Suppression de programmes du Panneau de configuration.

Remarque :

Il est possible que votre ordinateur affiche des noms ou des emplacements différents pour certains des éléments d'interface utilisateur Visual Studio dans les instructions suivantes. L'édition de Visual Studio dont vous disposez et les paramètres que vous utilisez déterminent ces éléments. Pour plus d'informations, consultez Paramètres Visual Studio.

Pour créer une file d'attente de messages sur l'ordinateur

  1. Dans le menu Fichier, pointez sur Nouveau, puis cliquez sur Fichier.

  2. Dans la boîte de dialogue Nouveau projet, créez une application WindowsVisual Basic ou Visual C#. Appelez-la MessageQ.

  3. Ouvrez l'Explorateur de serveurs. Pour plus d'informations, consultez Comment : accéder à l'Explorateur de serveurs/bases de données et l'initialiser.

  4. Développez le nœud Serveurs.

  5. Développez le nœud du serveur local. Le nœud du serveur local est identifié par le nom de l'ordinateur.

  6. Développez le nœud Files d'attente de messages.

  7. Cliquez avec le bouton droit sur Files d'attente privées puis cliquez sur Créer une file d'attente.

  8. Entrez HelpRequest comme nom de la file d'attente. Ne sélectionnez pas Créer une file d'attente transactionnelle.

  9. Une nouvelle file d'attente privée nommée HelpRequest est créée et s'affiche dans l'Explorateur de serveurs.

    Remarque :

    Vous pouvez également afficher la file d'attente récemment créée via l'icône Poste de travail. Cliquez avec le bouton droit sur l'icône Poste de travail sur le Bureau, puis cliquez sur Gérer. Développez le nœud Services et Applications. Développez le nœud Message Queuing et sélectionnez le dossier Files d'attente privées. La nouvelle file d'attente est affichée dans la liste des files d'attente.

Pour ajouter un composant MessageQueue associé à la file d'attente de messages

  1. Faites glisser la file d'attente HelpRequest de l'Explorateur de serveurs jusqu'au formulaire. Un nouveau composant MessageQueue configuré pour la file d'attente HelpRequest est ajouté au projet.

    Le composant MessageQueue est utilisé pour accéder par programme aux messages contenus dans la file d'attente HelpRequest créée dans la section précédente.

  2. Affectez la valeur helpRequestQueue à la propriété (Name) du composant MessageQueue.

  3. Dans la fenêtre Propriétés, développez le nœud MessageReadPropertyFilter. Affectez la valeur true à Priority. De cette façon, la priorité du message est récupérée lors de la récupération d'un message de la file d'attente.

    L'interface utilisateur que vous créez dans la procédure suivante permet à l'utilisateur d'entrer du texte pour une demande d'aide et de définir la priorité du message. L'utilisateur clique sur un bouton Envoyer pour envoyer la demande à la file d'attente. Un contrôle DataGridView affiche le contenu de la file d'attente. L'interface utilisateur contient également des boutons pour mettre à jour la grille avec le contenu actuel de la file d'attente et purger la file d'attente.

Pour créer l'interface utilisateur

  1. Sous l'onglet Windows Forms de la boîte à outils, ajoutez les contrôles suivants à Form1 :

  2. Définissez les propriétés suivantes des contrôles :

    Contrôle

    Propriété

    Nouvelle valeur

    Label1

    Text

    Nom

    Label2

    Text

    Message

    TextBox1

    Name

    txtName

     

    Text

    (vide)

    TextBox2

    Name

    txtMessage

     

    Text

    (vide)

     

    Multiline

    true

    Button1

    Name

    sendMessage

     

    Text

    Envoyer un message

    Button2

    Name

    refreshMessages

     

    Text

    Actualiser la liste des messages

    Button3

    Name

    purgeMessages

     

    Text

    Purger la liste des messages

    CheckBox1

    Name

    highPriority

     

    Text

    Haute priorité

    DataGridView1

    Name

    messageGrid

  3. Disposez les contrôles de façon appropriée.

Pour envoyer un message à la file d'attente

  1. Dans le concepteur, double-cliquez sur le bouton sendMessage pour créer le gestionnaire d'événements Click dans l'éditeur de code.

  2. Ajoutez du code à la méthode pour créer une nouvelle instance de Message, l'envoyer vers la file d'attente et mettre à jour l'affichage du message. Vous écrirez la méthode DisplayMessages à l'étape suivante.

    Private Sub sendMessage_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles sendMessage.Click
       Dim theMessage As System.Messaging.Message = _
          New System.Messaging.Message(Me.txtMessage.Text)
       theMessage.Label = Me.txtName.Text
       If highPriority.Checked Then
          theMessage.Priority = Messaging.MessagePriority.Highest
       Else
          theMessage.Priority = Messaging.MessagePriority.Normal
       End If
       helpRequestQueue.Send(theMessage)
       DisplayMessages()
    End Sub
    
    private void sendMessage_Click(object sender, System.EventArgs e)
    {
       System.Messaging.Message theMessage = 
          new System.Messaging.Message(txtMessage.Text);
       theMessage.Label = txtName.Text; 
       if (highPriority.Checked)
          theMessage.Priority = System.Messaging.MessagePriority.Highest;
       else
          theMessage.Priority = System.Messaging.MessagePriority.Normal;
       helpRequestQueue.Send(theMessage);
       DisplayMessages();
    }
    
  3. Ajoutez à votre projet une référence à System.Data. Ajoutez un Imports, instruction (espace de noms et type .NET) (Visual Basic) ou une instruction using (Référence C#) pour System.Data. Pour plus d'informations, consultez Gestion des références et Comment : ajouter ou supprimer des références dans Visual Studio (Visual Basic).

  4. Ajoutez une méthode pour afficher le contenu de la file d'attente dans le contrôle DataGridView. Cette méthode utilise la méthode MessageQueue.GetAllMessages pour récupérer tous les messages de la file d'attente. Les propriétés de file d'attente sélectionnées sont ajoutées à un objet DataTable, qui est utilisé comme source de données du contrôle DataGridView. Pour récupérer le texte du message, vous devez créer un formateur pour le message.

    Private Sub DisplayMessages()
       ' Create a DataTable
       Dim messageTable As New DataTable()
       messageTable.Columns.Add("Name")
       messageTable.Columns.Add("Message")
       messageTable.Columns.Add("Priority")
       Dim messages() As System.Messaging.Message
       messages = helpRequestQueue.GetAllMessages()
       ' Need a formatter to get the text of the message body.
       Dim stringFormatter As System.Messaging.XmlMessageFormatter = _
          New System.Messaging.XmlMessageFormatter(New String() _
          {"System.String"})
       Dim index As Integer
       Dim am As System.Messaging.Message
       ' Add each message to the DataTable
       For index = 0 To messages.Length - 1
          messages(index).Formatter = stringFormatter
          am = messages(index)
          messageTable.Rows.Add(New String() _
             {am.Label, am.Body.ToString(), am.Priority.ToString()})
       Next
    
       messageGrid.DataSource = messageTable
    End Sub
    
    private void DisplayMessages()
    {
       DataTable messageTable = new DataTable();
       messageTable.Columns.Add("Name");
       messageTable.Columns.Add("Message");
       messageTable.Columns.Add("Priority");
       System.Messaging.Message[] messages;
       messages = helpRequestQueue.GetAllMessages();
       System.Messaging.XmlMessageFormatter stringFormatter;
       stringFormatter = new System.Messaging.XmlMessageFormatter(
          new string[] {"System.String"});
       for (int index = 0; index < messages.Length; index++) 
       {
          messages[index].Formatter = stringFormatter;
          messageTable.Rows.Add(new string[] {
             messages[index].Label,
             messages[index].Body.ToString(),
             messages[index].Priority.ToString() });
       }
       messageGrid.DataSource = messageTable;
    

    }

Pour afficher le contenu d'une file d'attente

  1. Dans le concepteur, double-cliquez sur le bouton refreshMessage pour créer le gestionnaire d'événements Click dans l'éditeur de code.

  2. Dans le gestionnaire d'événements Click, appelez la méthode DisplayMessages.

    Private Sub refreshMessages_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles refreshMessages.Click
       DisplayMessages()
    End Sub
    
    private void refreshMessages_Click(object sender, System.EventArgs e)
    {
       DisplayMessages();
    

    }

Pour supprimer le contenu d'une file d'attente

  1. Dans le concepteur, double-cliquez sur le bouton purgeMessage pour créer le gestionnaire d'événements Click dans l'éditeur de code.

  2. Appelez la méthode Purge du helpRequestQueue, puis actualisez le contenu du contrôle DataGridView.

    Private Sub purgeMessages_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles purgeMessages.Click
       helpRequestQueue.Purge()
       DisplayMessages()
    End Sub
    
    private void purgeMessages_Click(object sender, System.EventArgs e)
    {
       helpRequestQueue.Purge();
       DisplayMessages();
    

    }

Pour tester l'application

  1. Appuyez sur F5 pour exécuter l'application.

  2. Tapez votre nom et un court message.

  3. Cliquez sur Envoyer un message pour envoyer le message vers la file d'attente et mettre à jour l'affichage.

  4. Cliquez sur Purger la liste des messages pour supprimer tous les messages de la file d'attente. La liste des messages est alors vide.

Voir aussi

Tâches

Comment : créer des files d'attente

Comment : créer des instances du composant MessageQueue

Comment : envoyer des messages simples

Comment : récupérer des messages

Concepts

Introduction à la messagerie

Autres ressources

Utilisation de composants de messagerie