2010-08-04 4 views
2

Considérant MSMQ version 3.0MSMQ: Accès distant dans un contexte transactionnel

Bonjour.

Je souhaite envoyer et lire des messages à partir d'une file d'attente MSMQ distante.

En version 3.0, les lectures à distance avec transactions ne sont pas prises en charge. Dans la version 4.0, les lectures transactionnelles peuvent être effectuées non avec la méthode de réception mais avec peek.

J'ai vu un problème en utilisant des lectures distantes transactionnelles avec MessageQueueTransaction et la réponse suggère d'utiliser des transitions DTC. (TransactionScope)

http://www.microsoft.com/communities/newsgroups/en-us/default.aspx?dg=microsoft.public.msmq.programming&tid=7dd22d35-1750-443d-a9b4-c771fde76e7b&cat=&lang=&cr=&sloc=&p=1

Ma question est de savoir si je peux faire à distance transactionnelle envoie avec objet ou MessageQueueTransaction, parce qu'il est un envoi à distance, je dois utiliser TransactionScope.

Merci

Répondre

1

Selon [1], il existe 2 types de transactions dans MSMQ:
- Opérations internes - accomplies par objet MessageQueueTransaction
- Opérations externes - accomplies par objet TransactionScope.

Nous utilisons des transactions externes lorsqu'il y a d'autres participants que MSMQ (comme une base de données) qui doivent travailler ensemble dans la même transaction. Sinon, si notre transaction n'inclut que des files d'attente MSMQ (même s'il y en a plusieurs), nous devrions utiliser MessageQueueTransaction. Selon [2], les envois msmq sont effectués en mode "feu et oublie". Dans ce cas, indépendamment de la file d'attente locale ou distante, si la transaction n'implique pas d'autres participants, un MessageQueueTransaction doit être utilisé.

Dans le cas de files d'attente distantes, si nous avons besoin d'une garantie qui arrive à destination, nous devons utiliser un mécanisme d'accusé de réception.

[1] http://msdn.microsoft.com/en-us/library/ms978430.aspx
[2] http://beaucrawford.net/post/MSMQ-ndash3b-Sending-Messages-to-Remote-Queues.aspx

Questions connexes