Partager via


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

Begin

Indique le début d'une transaction composée d'un ou de plusieurs messages et opérations.

Commit

Valide la transaction si toutes les opérations de message qu'elle contient ont réussi.

Abort

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

  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.

  2. Créez une instance de la classe MessageQueueTransaction pour contrôler la transaction.

  3. Appelez la méthode Begin de la classe MessageQueueTransaction.

  4. 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.

  5. Une fois le dernier message envoyé, appelez la méthode Commit sur l'instance MessageQueueTransaction pour fermer la transaction.

  6. 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.

  7. 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

Autres ressources

Envoi et sérialisation de messages