2009-10-09 11 views
7

Quelqu'un peut-il me dire si MSMQ (en utilisant des transactions) prend en charge les consommateurs concurrents? Fondamentalement, j'ai plusieurs threads dequeueing messages hors d'une seule file d'attente. Je voulais juste m'assurer que cela fonctionnera puisque MSMQ se comporte parfois différemment que ce à quoi je m'attendais.MSMQ concurrent consommateur

+1

Etes-vous en train de lire ou de recevoir des messages? –

+0

Je reçois des messages. –

Répondre

6

Si vous appelez Recevoir à partir de plusieurs processus sur le même ordinateur dans la même file d'attente, vous n'obtiendrez pas le même message plus d'une fois, sauf si vous annulez une transaction à partir d'une lecture.

Si vous utilisez 2008/w7 et que vous recevez sur plusieurs machines de la même file d'attente distante dans une transaction, vous ne devriez pas voir le même message deux fois (à nouveau, sauf si vous annulez). Si vous utilisez un énumérateur pour lire les messages et en supprimer un intéressant (via RemoveCurrent), vous devriez vous attendre à voir une exception: le message a déjà été supprimé si un autre consommateur l'a détecté.

Si vous êtes sur 2003/XP, vous ne pouvez pas faire de réception à distance dans une transaction, donc tous les paris sont désactivés.