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 |
---|---|
Indicare l'inizio di una transazione composta da uno o più messaggi e operazioni. |
|
Eseguire il commit della transazione se tutte le operazioni del messaggio in essa contenute sono state completate correttamente. |
|
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
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.
Creare un'istanza della classe MessageQueueTransaction per controllare la transazione.
Chiamare il metodo Begin della classe MessageQueueTransaction.
Definire ciascun messaggio che si desidera inviare dopo aver chiamato Begin. Per ulteriori informazioni, vedere Procedura: creare istanze del componente MessageQueue.
Dopo l'invio dell'ultimo messaggio, chiamare il metodo Commit dell'istanza MessageQueueTransaction per chiudere la transazione.
Racchiudere l'intera transazione nel codice di controllo degli errori Try...Catch per gestire gli eventuali errori che si verificano.
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