Comment : envoyer des messages dans des transactions internes
Mise à jour : novembre 2007
Les transactions internes impliquent uniquement des ressources Message Queuing et sont gérées intégralement à partir de Message Queuing à l'aide de MessageQueueTransaction. Vous instanciez une instance de MessageQueueTransaction pour gérer le processus transactionnel et transmettre celle-ci au message que vous avez choisi d'envoyer par transaction.
Les méthodes suivantes contrôlent le processus transactionnel :
Méthode |
Fonction |
---|---|
Indique le début d'une transaction composée d'un ou de plusieurs messages et opérations. |
|
Valide la transaction si toutes les opérations de message qu'elle contient ont réussi. |
|
Restaurez une transaction pendant la vérification des erreurs. |
Remarque : |
---|
La déconnexion ou l'arrivée à saturation d'une file d'attente n'est pas considérée comme un échec. |
Dans la plupart des cas, votre code transactionnel doit se trouver dans un Try...Catch...Finally, instruction (Visual Basic) (ou try-catch-finally (Référence C#)). De cette manière, vous pouvez spécifier la transaction dans la partie Try de l'instruction, puis utiliser l'instruction Catch pour émettre la méthode Abort en cas d'erreur. Le code ci-dessous illustre parfaitement ce modèle d'utilisation.
Pour envoyer des messages dans une transaction interne
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.
Créez une instance de la classe MessageQueueTransaction pour contrôler la transaction.
Appelez la méthode Begin de la classe MessageQueueTransaction.
Définissez chacun des messages que vous souhaitez envoyer après l'appel de Begin. Pour plus d'informations, consultez Comment : créer des instances du composant MessageQueue.
Une fois le dernier message envoyé, appelez la méthode Commit sur l'instance MessageQueueTransaction pour fermer la transaction.
Incorporez la totalité de la transaction dans le code de vérification des erreurs Try...Catch afin de gérer les erreurs qui pourraient éventuellement se produire.
Si vous décelez une erreur, restaurez la transaction en appelant la méthode Abort.
Votre code se présente comme suit :
Dim transaction As New System.Messaging.MessageQueueTransaction transaction.Begin() Try MessageQueue1.Send("Message1", "Label1", transaction) MessageQueue1.Send("Message2", "Label2", transaction) MessageQueue1.Send("Message3", "Label3", transaction) transaction.Commit() Catch transaction.Abort() End Try
System.Messaging.MessageQueueTransaction transaction = new System.Messaging.MessageQueueTransaction(); transaction.Begin(); try { messageQueue1.Send("Message1", "Label1", transaction); messageQueue1.Send("Message2", "Label2", transaction); messageQueue1.Send("Message3", "Label3", transaction); transaction.Commit(); } catch { transaction.Abort(); }
Voir aussi
Tâches
Comment : créer des files d'attente transactionnelles
Comment : créer des instances du composant MessageQueue
Concepts
Traitement transactionnel des messages