Pregunta

Estoy investigando el uso de MSMQ para el nuevo proyecto de mi equipo, pero necesito saber si puedo enviar mensajes de MSMQ y ejecutar comandos SQL dentro de un System.Transactions.TransactionScope y hacer que se confirmen o deshagan juntos. No puedo encontrar una fuente confiable en línea que diga " sí " con ejemplos de código.

Necesito enviar algunos mensajes a una sola cola e insertar algunos registros en una sola base de datos, pero necesito tener éxito o fallar juntos.

EDIT: no pude verificar realmente si esto funciona o no en mis pruebas (me retiraron de esta tarea rápidamente) pero toda la documentación indica que TransactionScope captura los mensajes MSMQ y los comandos SQL en la misma instancia.

¿Fue útil?

Solución

Por experiencia personal, sé que TransactionScope funciona muy bien con SQL. No estoy muy familiarizado con MSMQ pero un rápido búsqueda de Google muestra algunos ejemplos. (normalmente discusiones en el foro) donde parece que está funcionando correctamente. El objeto System.Messaging.MessageQueue también tiene una propiedad .Transactional y el método .Send () tiene un parámetro MessageQueueTransaction, por lo que diría que todos deberían funcionar juntos.

Aquí está el ejemplo de código de uno de los foros en la búsqueda (no mi código):

using (TransactionScope scope = new TransactionScope())  
{  
    using (MessageQueue myQueue = new MessageQueue(QUEUE_NAME))  
    {  
    if (myQueue.Transactional)  
        {  
        myQueue.Send(TicketTextBox.Text, "Message", MessageQueueTransactionType.Automatic);  
        }  
    }  
scope.Complete();  
}

Simplemente introduzca su código SQL dentro del bloque using () para TransactionScope (antes de .Complete ()) y debería estar listo para comenzar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top