J'ai rencontré une situation étrange:MSMQ rejette les messages si la file d'attente de destination n'existe pas?
Les messages sont envoyés de ServerA à ServerB. Il va dans la file d'attente sortante de ServerA et ensuite envoyé à la file d'attente de ServerB.
ServerB s'est écrasé. Nous avons dû reformater. Quand nous l'avons soulevé, nous avons oublié d'installer le service MSMQ.
Les messages commencent à se remplir dans la file d'attente sortante de ServerA jusqu'à ce que le programme qui envoie des messages lève une exception de ressources insuffisante.
Nous notons l'erreur et installé le service MSMQ sur ServerB. ServerA commence à vider immédiatement sa file d'attente sortante. Lorsque nous avons démarré le programme pour traiter les messages sur ServerB, il ne pouvait pas se connecter.
Nous avons appris que nous avions oublié de créer la file d'attente sur ServerB. Cependant, à ce moment-là, il était trop tard. Tous les messages 900K qui étaient placés dans la file d'attente de ServerA ont été envoyés à ServerB. D'après ce que je peux dire, ServerB les a jetés parce qu'il n'était pas configuré avec la file d'attente de destination. Je sais déjà que la solution correcte est d'arrêter la file d'attente sur ServerA jusqu'à ce que nous ayons complètement configuré ServerB.
La question est: Est-ce vraiment le vrai comportement que nous devrions attendre de MSMQ? J'aurais pensé qu'une approche de conception plus défensive aurait été pour ServerB de rejeter les messages au lieu de les prendre et de les jeter.