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
Dans le menu Fichier, pointez sur Nouveau, puis cliquez sur Fichier.
Dans la boîte de dialogue Nouveau projet, créez une application WindowsVisual Basic ou Visual C#. Appelez-la MessageQ.
Ouvrez l'Explorateur de serveurs. Pour plus d'informations, consultez Comment : accéder à l'Explorateur de serveurs/bases de données et l'initialiser.
Développez le nœud Serveurs.
Développez le nœud du serveur local. Le nœud du serveur local est identifié par le nom de l'ordinateur.
Développez le nœud Files d'attente de messages.
Cliquez avec le bouton droit sur Files d'attente privées puis cliquez sur Créer une file d'attente.
Entrez HelpRequest comme nom de la file d'attente. Ne sélectionnez pas Créer une file d'attente transactionnelle.
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
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.
Affectez la valeur helpRequestQueue à la propriété (Name) du composant MessageQueue.
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
Sous l'onglet Windows Forms de la boîte à outils, ajoutez les contrôles suivants à Form1 :
Deux contrôles Label
Deux contrôles TextBox
Trois contrôles Button
Un contrôle CheckBox
Un DataGridView
Définissez les propriétés suivantes des contrôles :
Contrôle
Propriété
Nouvelle valeur
Label1
Nom
Label2
Message
TextBox1
txtName
(vide)
TextBox2
txtMessage
(vide)
true
Button1
sendMessage
Envoyer un message
Button2
refreshMessages
Actualiser la liste des messages
Button3
purgeMessages
Purger la liste des messages
CheckBox1
highPriority
Haute priorité
DataGridView1
messageGrid
Disposez les contrôles de façon appropriée.
Pour envoyer un message à la file d'attente
Dans le concepteur, double-cliquez sur le bouton sendMessage pour créer le gestionnaire d'événements Click dans l'éditeur de code.
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(); }
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).
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
Dans le concepteur, double-cliquez sur le bouton refreshMessage pour créer le gestionnaire d'événements Click dans l'éditeur de code.
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
Dans le concepteur, double-cliquez sur le bouton purgeMessage pour créer le gestionnaire d'événements Click dans l'éditeur de code.
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
Appuyez sur F5 pour exécuter l'application.
Tapez votre nom et un court message.
Cliquez sur Envoyer un message pour envoyer le message vers la file d'attente et mettre à jour l'affichage.
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