Cómo: Enviar mensajes en transacciones internas
Actualización: noviembre 2007
Las transacciones internas implican únicamente a recursos de Message Queue Server y se administran exclusivamente desde Message Queue Server mediante MessageQueueTransaction. Para controlar el proceso de transacción, se crea una instancia de MessageQueueTransaction y se transfiere al mensaje elegido para enviarla como una transacción.
Los métodos siguientes controlan el proceso transaccional:
Método |
Utilizado para |
---|---|
Indica el inicio de una transacción, que tiene uno o varios mensajes y operaciones. |
|
Confirmar la transacción si todas las operaciones de mensajes que contiene se realizaron correctamente. |
|
Deshacer una transacción durante la comprobación de errores. |
Nota: |
---|
Una cola desconectada o llena no se considera un error. |
En la mayoría de los casos, el código transaccional debería agregarse en una instrucción Instrucción Try...Catch...Finally (Visual Basic) (o try-catch-finally (Referencia de C#)). Esto permite especificar la transacción en la sección Try de la instrucción y, a continuación, utilizar la instrucción Catch para ejecutar el método Abort si se producen errores. Vea el código siguiente para obtener un ejemplo de este modelo.
Para enviar mensajes dentro de una transacción interna
Cree una instancia del componente MessageQueue y establezca su propiedad Path en la cola a la que se desea hacer referencia. Para obtener más información, vea Cómo: Crear instancias de componentes MessageQueue.
Cree una instancia de la clase MessageQueueTransaction para controlar la transacción.
Llame al método Begin de la clase MessageQueueTransaction.
Defina cada mensaje que desea enviar después de llamar a Begin. Para obtener más información, vea Cómo: Crear instancias de componentes MessageQueue.
Una vez enviado el último mensaje, llame al método Commit de la instancia de MessageQueueTransaction para cerrar la transacción.
Agregue todo el trabajo de la transacción en el código de comprobación de errores Try...Catch para controlar los errores que puedan surgir.
Si detecta un error, deshaga la transacción llamando al método Abort.
El código podría tener el siguiente aspecto:
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(); }
Vea también
Tareas
Cómo: Crear colas transaccionales
Cómo: Crear instancias de componentes MessageQueue
Conceptos
Procesamiento transaccional de mensajes