Question

Je continue à consulter la documentation disant que il n'est pas possible d'envoyer à une file d'attente msmq transactionnelle distante, en dehors du cadre d'une transaction. Je trouve cela difficile à croire car je pense que je fais exactement cela depuis des semaines. J'ai une petite application qui poste des messages dans une file d'attente distante et transactionnelle. Juste pour expérimenter les performances, différentes versions du client ont utilisé un TransactionScope pour emballer l’opération d’envoi ou non. En fin de compte, l'utilisation d'une logique de transaction compensatrice semblait beaucoup plus intelligente et plus rapide. Par conséquent, l'utilisation de TransactionScope sur le client et sur le serveur a été abandonnée. Le fait est que les messages semblent toujours apparaître dans la file d'attente et sont traités par le service sans problème.

Quelqu'un peut-il m'expliquer ce qui me manque ici? Suis-je juste être épais? N'hésitez pas à le dire (ce ne sera certainement pas la première fois).

Était-ce utile?

La solution

Les transactions auxquelles vous faites référence avec TransactionScope sont implémentées par le DTC (coordinateur de transactions distribuées). msmq (comme sql) a son moteur de transaction interne. Il y a une propriété dans le message qui indique qu'il s'agit d'un message transactionnel. Et vous le définissez probablement quelque part dans votre code.

Autres conseils

Cela dépend de la version de MSMQ que vous utilisez. Seuls les MSMQ 4.0 et supérieurs (Vista, 7, Server 2008) peuvent effectuer des lectures transactionnelles à distance. Et vous utilisez correctement TransactionScope, car le DTC doit être utilisé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top