2011-08-12 3 views
2

Nous envisageons d'utiliser MSMQ comme service de traitement des messages dans notre application. Ce que nous voulons est - MSMQ dans une ferme de serveurs assis derrière l'équilibreur de charge réseau (NLB) qui distribue la charge entre les nœuds. J'ai les questions suivantes pour lesquelles je n'ai pas trouvé de pointeurs en ligne.MSMQ dans une batterie de serveurs

1) Dois-je installer MSMQ dans tous les nœuds?
2) Si oui, lorsque l'application expéditrice envoie un message à MSMQ, doit-elle l'envoyer à tous les nœuds?
3) Si la réponse à ma deuxième question est oui, lorsqu'un message est reçu par l'application cliente, comment les autres nœuds devraient-ils être informés du message reçu par le client et ensuite être retirés?

J'apprécierais toute aide/pointeurs.

Répondre

4

Voici quelques messages de blog qui peuvent aider:

Q1) Ai-je besoin d'avoir MSMQ installé dans tous les nœuds?
A1) Vous avez besoin de MSMQ installé sur chaque serveur qu'un message sera également livré.

Q2) Si oui, lorsque l'application expéditrice envoie un message à MSMQ doit-elle envoyer à tous les nœuds? A A2) C'est un moyen d'équilibrer la charge à laquelle vous envoyez des messages X à des nœuds X, mais lisez seulement à partir d'un nœud, en ignorant les autres copies.
Une autre méthode consiste à envoyer à un équilibreur de charge réseau qui envoie un message à un nœud sélectionné de manière aléatoire, bien que MSMQ soit très collant, donc très difficile/impossible à équilibrer charge de gros volumes de cette façon. Q3) Si la réponse à ma deuxième question est oui, alors lorsqu'un message est reçu par l'application cliente, comment les autres nœuds devraient-ils être informés du message reçu par le client et ensuite être retirés d'eux?
A3) C'est l'inconvénient du type d'équilibrage de charge qui vous est proposé. MSMQ ne supprimera pas un message sauf si votre application le supprime ou si le délai TimeToBeReceived expire. Fondamentalement, vous aurez besoin d'avoir des applications client coordonnées si vous devez éviter le traitement des messages en double.

Vive
John Breakwell

+0

Merci John, pour la réponse et des pointeurs. – muruge

+1

En ce qui concerne A2, "MSMQ est très collant", voici une bonne discussion: http://blogs.msdn.com/b/johnbreakwell/archive/2009/03/19/load-balancing-msmq-a-brief-discussion. aspx "par défaut ... attendez 2 ou 5 minutes ... d'inactivité avant que la connexion réseau soit abandonnée .... il est possible de forcer MSMQ à abandonner la connexion presque immédiatement .... Ceci n'est pas recommandé, cependant, comme le prochain message doit attendre qu'une nouvelle connexion réseau soit créée " –

+0

Merci, Nelson :-) –

Questions connexes