SendMSMQMessage
L'exemple SendMSMQMessage montre comment envoyer un message à un port MSMQ à partir d'une application basée sur .NET. Il fournit également des instructions sur la configuration de Microsoft BizTalk Server pour utiliser un emplacement de réception MSMQ.
Vous devez être conscient que de nombreuses opérations dans Message Queuing sont asynchrones. Autrement dit, de nombreux appels d’API MSMQ (par exemple, System.Messaging.MessageQueue.Send) retournent à l’appelant avant que l’opération demandée ne soit entièrement terminée. MSMQ intègre un mécanisme qui renvoie des commentaires à l'application une fois l'opération terminée. Ce mécanisme implique l’utilisation d’une « file d’attente Administration ». MSMQ retourne des commentaires sous la forme d’un message dans la file d’attente Administration. La file d'administration à laquelle MSMQ renvoie des commentaires est spécifiée lors de l'appel de l'API MSMQ. Ainsi, par exemple, lors de l’envoi d’un message à l’aide de l’API System.Messaging.MessageQueue.Send, l’application peut spécifier le nom d’une file d’attente Administration à l’aide de la propriété PROPID_M_ADMIN_QUEUE message sur le message passé lors de l’appel à System.Messaging.MessageQueue.Send. Même si l’application peut obtenir un code de retour réussi lors de l’appel System.Messaging.MessageQueue.Send, si l’opération d’envoi de message échoue par la suite, MSMQ écrit un message à cet effet dans la file d’attente Administration spécifiée. Si l'application ne spécifie pas de file d'administration, l'échec d'envoi entraîne la perte du message sans aucun diagnostic. Le message disparaît purement et simplement. Il existe un certain nombre de situations d’erreur dans MSMQ qui peuvent provoquer cela, par exemple, effectuer un envoi non transactionnel vers une file d’attente transactionnelle.
Dans le contexte de cet exemple, il est important que le code spécifie un type de transaction dans l’appel à System.Messaging.MessageQueue.Send cohérent avec la prise en charge de transaction spécifiée pour la file d’attente à laquelle le message est envoyé. Si ce n'est pas le cas et si aucune file d'administration n'est spécifiée (comme dans cet exemple), l'API MSMQ écarte le message envoyé sans le signaler (aucun code d'erreur n'est renvoyé à l'application, aucun diagnostic n'est écrit dans le journal des événements, etc.).
<Samples Path>\AdaptersUsage\SendMSMQMessage\
Le tableau suivant présente les fichiers de cet exemple et décrit leur fonction.
Fichiers | Description |
---|---|
App.ico, AssemblyInfo.cs, SendMSMQMessage.csproj, SendMSMQMessage.sln | Fournir un projet, une solution et des fichiers connexes pour l'application graphique destinée à cet exemple. |
Form1.cs, Form1.resx | Fournissez des fichiers de formulaire et de source Microsoft Visual C#.NET pour l’application graphique simple de cet exemple. |
Vous pouvez utiliser le code de l’application graphique simple incluse dans cet exemple comme exemple d’envoi de messages à des emplacements de réception MSMQ dans BizTalk Server à partir de . Applications compatibles AVEC NET, telles que Microsoft Office, à partir de ASP.NET pages, etc.
À l’aide de Visual Studio, ouvrez le fichier solution SendMSMQMessage.sln.
Dans le menu Générer, cliquez sur Générer la solution.
Utilisez les procédures suivantes pour configurer BizTalk Server et créer la file d’attente MSMQ pour l’exécution de l’exemple.
Cliquez sur Démarrer, cliquez avec le bouton droit sur Ordinateur, puis cliquez sur Gérer.
Développez le nœud Fonctionnalités . Si Message Queuing n’est pas installé, cliquez avec le bouton droit sur Fonctionnalités , puis sélectionnez Ajouter des fonctionnalités. Cochez Message Queuing, cliquez sur Suivant, puis sur Installer pour installer MSMQ sur ce système.
Développez le nœud Message Queuing .
Cliquez avec le bouton droit sur le nœud Files d’attente privées , cliquez sur Nouveau, puis sur File d’attente privée.
Sous Nom de la file d’attente, entrez
test
. Vérifiez que la zone Case activée transactionnelle est cochée.Cliquez sur OK.
Cliquez sur Démarrer, cliquez avec le bouton droit sur Ordinateur, puis cliquez sur Gérer.
Développez Services et applications, puis développez le nœud Message Queuing .
Notes
Si Message Queuing n’est pas installé sur l’ordinateur, accédez à Panneau de configuration > Programmes > et fonctionnalités, puis sélectionnez Activer ou désactiver les fonctionnalités Windows. Vérifiez toutes les fonctionnalités sous Microsoft Message Queue (MSMQ) Server, puis cliquez sur OK.
Cliquez avec le bouton droit sur le nœud Files d’attente privées , cliquez sur Nouveau, puis sur File d’attente privée.
Sous Nom de la file d’attente, entrez test. Vérifiez que la zone Case activée transactionnelle est cochée.
Cliquez sur OK.
Sélectionnez le dossier dans lequel vous voulez recevoir les messages. Les étapes suivantes sont basées sur l'hypothèse que vous avez sélectionné le dossier C:\Demo\Report, mais vous pouvez les ajuster si nécessaire pour un autre dossier.
Ouvrez la console Administration BizTalk Server.
Créez une application nommée MSMQSample.
Cliquez avec le bouton droit sur Ports de réception, cliquez sur Nouveau, puis sur Port de réception unidirectionnel.
Dans la boîte de dialogue Propriétés du port de réception, dans la zone Nom , entrez MyReceivePort, puis cliquez sur OK.
Cliquez avec le bouton droit sur Emplacements de réception, cliquez sur Nouveau, puis cliquez sur Emplacement de réception unidirectionnel. Dans la boîte de dialogue Sélectionner un port de réception, sélectionnez le port de réception que vous venez de créer, puis cliquez sur OK.
Dans la boîte de dialogue Propriétés de l’emplacement de réception, dans la zone Nom , tapez un nom pour le port de réception, par exemple MSMQReceiveLocation.
Dans la boîte de dialogue Propriétés de l’emplacement de réception, pour le type de transport, sélectionnez MSMQ .
Cliquez sur Configurer pour ouvrir la boîte de dialogue Propriétés du transport MSMQ . Définissez File d’attente
localhost\private$\test
sur , définissez TransactionalTrue
sur , puis cliquez sur OK.Développez l’application, sélectionnez Ports d’envoi, Nouveau, puis Port d’envoi unidirectionnel statique.
Dans la boîte de dialogue Propriétés du port d’envoi, dans la zone Nom , tapez un nom pour le port d’envoi, par exemple MySendPort.
Définissez la propriété Type de transport sur FILE.
Cliquez sur Configurer pour ouvrir la boîte de dialogue Propriétés du transport de fichiers.
Dans la boîte de dialogue Propriétés du transport fichier, définissez la propriété Dossier de destination sur C :\Demo\Report, conservez les paramètres par défaut des autres propriétés, puis cliquez sur OK.
Sélectionnez Filtres, puis ajoutez une nouvelle ligne en définissant Propriété sur BTS. ReceivePortName. Laissez la colonne Opérateur définie sur ==, définissez la colonne Valeur sur MyReceivePort, puis cliquez sur OK.
Cliquez avec le bouton droit sur votre nouveau port d’envoi, puis cliquez sur Inscrire.
Cliquez à nouveau avec le bouton droit sur votre nouveau port d’envoi, puis cliquez sur Démarrer.
Cliquez avec le bouton droit sur votre nouvel emplacement de réception, puis cliquez sur Activer.
BizTalk Server est maintenant prêt à utiliser cet exemple.
La procédure suivante permet d'exécuter l'exemple SendMSMQMessage.
Dans une fenêtre de commande, accédez au dossier suivant :
<Samples Path>\AdaptersUsage\SendMSMQMessage\bin\Debug
Exécutez le fichier SendMSMQMessage.exe qui démarre l'application graphique qui fournit l'interface utilisateur pour cet exemple.
Dans l’application graphique, dans la zone Nom de l’ordinateur BizTalk , tapez le nom de l’ordinateur local.
Essayez l’option Envoyer en wrapped :
Si vous le souhaitez, modifiez le texte dans la zone Corps du message .
Cliquez sur Envoyer encapsulé.
Si l'opération réussit, vous voyez ce qui suit :
Le mot Réussite apparaît en police rouge dans la zone située juste au-dessus des boutons.
Un fichier apparaît dans le dossier de destination, C:\Demo\Reports. Ce fichier contient le texte de la zone Corps du message encapsulé dans des balises XML simples par la bibliothèque de mise en file d’attente de messages .NET.
Si l'opération échoue, un message d'erreur s'affiche juste au-dessus des boutons.
Essayez l’option Envoyer exactement :
Si vous le souhaitez, modifiez le texte dans la zone Corps du message .
Cliquez sur Envoyer exactement.
Si l'opération réussit, vous voyez ce qui suit :
Le mot Réussite apparaît en police rouge dans la zone située juste au-dessus des boutons.
Un fichier apparaît dans le dossier de destination, C:\Demo\Reports. Ce fichier contient le texte de la zone Corps du message exactement tel qu’il apparaît dans la zone de texte.
Si l'opération échoue, un message d'erreur s'affiche juste au-dessus des boutons.