Tengo un proceso simple que lee desde una cola, procesa los mensajes y los resultados a otro. Estoy tratando de ajustar esta transferencia dentro de un TransactionScope, de forma tal que tanto la lectura de la cola de entrada como la escritura en la cola de salida ocurran dentro de la misma transacción.TransactionScope que se eleva a MSDTC al enviar entre colas?
Sin embargo, parece que MSDTC se está utilizando para realizar esta transacción y, como resultado, es significativamente más lento que el uso de MessageQueueTransaction estándar. ¿Debería estar pasando esto? Tenía la impresión de que TransactionScope solo se elevaría a una transacción externa si el ámbito involucrado, por ejemplo, una lectura de la cola de mensajes y una escritura de la base de datos, pero no si solo estaban involucradas múltiples colas de mensajes.
Gracias.
EDITAR: Todo esto está en mi computadora portátil en este momento, así que estoy seguro de que no hay otras máquinas involucradas.
También deseo agregar que estoy confirmando que se está produciendo una transacción escalada marcando el complemento "Servicios de componentes" de Windows (es decir, el DTC local/Lista de transacciones). Puedo ver las transacciones que entran y salen de esta pantalla, lo que supongo significa que la transacción se ha escalado. ¿Me equivoco al asumir esto?
EDIT 2: Tengo el mismo comportamiento cuando estoy escribiendo en una sola cola. es decir
using (var ts = new TransactionScope())
{
using (var q = new MessageQueue("..."))
{
/* write data */
}
ts.Complete();
}
puedo ver el DTC siendo utilizado con lo anterior, a pesar de la fila de espera en la máquina local.
¿Dónde están las colas en relación con la aplicación? La misma máquina? Máquina diferente? –
¿Está utilizando un servidor agrupado? –
No, esto es todo local en mi computadora portátil en este momento. He actualizado mi pregunta con alguna aclaración. – Barguast