Je continue à voir documentation disant qu'il n'est pas possible d'envoyer à une file d'attente msmq transactionnelle distante, en dehors de la portée d'une transaction. Je trouve cela difficile à croire parce que je pense Je fais exactement cela depuis des semaines maintenant. J'ai une petite application qui envoie des messages à une file d'attente distante qui est transactionnelle. Juste pour expérimenter avec les performances, différentes versions du client ont soit utilisé un TransactionScope pour envelopper l'opération d'envoi ou non. En fin de compte, l'utilisation d'une logique de transaction de compensation semblait beaucoup plus intelligente et plus rapide, donc l'utilisation de TransactionScope sur le client et le serveur a été abandonnée. Le problème est que les messages semblent toujours apparaître dans la file d'attente et être traités par le service sans aucun problème. Est-ce que quelqu'un peut m'expliquer ce que je manque ici? Suis-je juste épais? N'hésitez pas à le dire (ce ne sera certainement pas la première fois).msmq transactionnel et non-transactionnel
4
A
Répondre
4
La transaction à laquelle vous faites référence avec TransactionScope est implémentée par le dtc (distributed transaction coordinator). msmq (comme sql) a son moteur de transaction interne. Il y a une propriété dans le message qui indique que c'est un message transactionnel. Et vous l'avez probablement placé quelque part dans votre code.
1
Cela dépend de la version de MSMQ que vous utilisez. Seul MSMQ 4.0 et supérieur (Vista, 7, Server 2008) peut effectuer des lectures transactionnelles à distance. Et vous utilisez correctement TransactionScope, car DTC doit être utilisé.