Pregunta

Sigo viendo documentación diciendo que no es posible enviar a una cola de msmq transaccional remota, fuera del alcance de una transacción. Me cuesta creerlo porque pienso Hace ya semanas que hago exactamente eso. Tengo una aplicación pequeña que publica mensajes en una cola remota que es transaccional. Solo para experimentar con el rendimiento, varias versiones del cliente han usado un TransactionScope para envolver la operación de envío o no. En última instancia, el uso de cierta lógica de transacción compensatoria parecía mucho más inteligente y más rápido, por lo que se eliminó el uso de TransactionScope tanto en el cliente como en el servidor. El problema es que los mensajes siguen apareciendo en la cola y son procesados ??por el servicio sin ningún problema.

¿Alguien puede explicarme qué es lo que me estoy perdiendo aquí? ¿Solo estoy siendo grueso? Siéntete libre de decirlo (ciertamente no será la primera vez).

¿Fue útil?

Solución

La transacción a la que hace referencia con TransactionScope está implementada por el dtc (coordinador de transacciones distribuidas). msmq (como sql) tiene su motor de transacciones interno. Hay una propiedad en el mensaje que indica que es un mensaje transaccional. Y probablemente lo haya configurado en algún lugar de su código.

Otros consejos

Depende de la versión de MSMQ que estés usando. Solo MSMQ 4.0 y versiones posteriores (Vista, 7, Server 2008) pueden realizar lecturas transaccionales remotas. Y está utilizando el TransactionScope correctamente, ya que se debe usar DTC.

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