Condividi tramite


Procedura: inviare messaggi nell'ambito di transazioni interne

Aggiornamento: novembre 2007

Le transazioni interne utilizzano solo le risorse di Accodamento messaggi e sono gestite interamente all'interno di Accodamento messaggi mediante la classe MessageQueueTransaction. Creare un'istanza della classe MessageQueueTransaction per gestire il processo della transazione e passarlo al messaggio per l'invio come transazione.

Di seguito sono riportati metodi utilizzati per controllare il processo transazionale:

Metodo

Utilizzato per

Begin

Indicare l'inizio di una transazione composta da uno o più messaggi e operazioni.

Commit

Eseguire il commit della transazione se tutte le operazioni del messaggio in essa contenute sono state completate correttamente.

Abort

Eseguire il rollback di una transazione durante il controllo errori.

Nota:

Una coda disconnessa o completa non viene considerata un errore.

Nella maggior parte dei casi, il codice transazionale deve essere racchiuso in un'Istruzione Try...Catch...Finally (Visual Basic) o try-catch-finally (Riferimenti per C#). Ciò consente di specificare la transazione nella parte Try dell'istruzione, quindi di utilizzare l'istruzione Catch per eseguire il metodo Abort in caso di errore. Esaminare il codice che segue per un esempio di questo modello.

Per inviare messaggi nell'ambito di una transazione interna

  1. Creare un'istanza del componente MessageQueue e impostarne la proprietà Path sulla coda a cui si desidera fare riferimento. Per ulteriori informazioni, vedere Procedura: creare istanze del componente MessageQueue.

  2. Creare un'istanza della classe MessageQueueTransaction per controllare la transazione.

  3. Chiamare il metodo Begin della classe MessageQueueTransaction.

  4. Definire ciascun messaggio che si desidera inviare dopo aver chiamato Begin. Per ulteriori informazioni, vedere Procedura: creare istanze del componente MessageQueue.

  5. Dopo l'invio dell'ultimo messaggio, chiamare il metodo Commit dell'istanza MessageQueueTransaction per chiudere la transazione.

  6. Racchiudere l'intera transazione nel codice di controllo degli errori Try...Catch per gestire gli eventuali errori che si verificano.

  7. Se si rileva un errore, eseguire il rollback della transazione chiamando il metodo Abort.

    Il codice dovrebbe risultare simile al seguente:

    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();
            }
    

Vedere anche

Attività

Procedura: creare code transazionali

Procedura: creare istanze del componente MessageQueue

Concetti

Elaborazione transazionale dei messaggi

Altre risorse

Invio e serializzazione di messaggi