2008-09-15 4 views
4

Je crée un service Windows en C# qui traite les messages d'une file d'attente. Je veux donner aux ops la flexibilité de partitionner le service en production en fonction des propriétés du message. Par exemple, ils devraient être en mesure de dire qu'une instance traite les commandes Web du Client A, les autres commandes groupées du Client A, un troisième Web ou des commandes groupées du Client B, etc.Puis-je filtrer les messages que je reçois d'une file d'attente de messages (MSMQ) par certaines propriétés? (un sujet de .k.a)

Ma solution actuelle consiste à affecter des files d'attente distinctes à chaque combinaison client/source. Le processus qui place les commandes dans les files d'attente doit prendre la bonne décision. Mon service Windows peut être configuré pour extraire des messages d'une ou de plusieurs files d'attente. C'est salissant, mais ça fonctionne.

Répondre

5

Non, mais vous pouvez PEEK dans la file d'attente et décider si vous voulez vraiment consommer le message.

3

Utilisez GetMessageEnumerator2() comme ceci:

MessageEnumerator en = q.GetMessageEnumerator2(); 

while (en.MoveNext()) 
{ 
    if (en.Current.Label == label) 
    { 
     string body = ((XmlDocument)en.Current.Body).OuterXml; 
     en.RemoveCurrent(); 
     return body; 
    } 
} 
Questions connexes