Test d'existence d'une file d'attente de messages distante (à l'aide de C #)

StackOverflow https://stackoverflow.com/questions/1010366

  •  06-07-2019
  •  | 
  •  

Question

Comment savoir si une file d'attente de messages distante existe ? La documentation indique que le fichier "Exists" existe déjà. Cette méthode ne fonctionne pas pour les ordinateurs distants.

Ce qui suit n'est pas valide (je sais que le chemin d'accès à la file d'attente est exact, car je peux envoyer des messages à la file d'attente):

if (!MessageQueue.Exists(@"FormatName:Direct=TCP:192.168.2.58\Private$\MyQueue"))
  throw new InvalidOperationException("Queue does not exist");

Le problème est que l'envoi d'un message à une adresse réseau sur laquelle il n'y a pas de file d'attente d'écoute ne provoque pas d'exception. Il est essentiel que notre application génère une exception pour une adresse de file d'attente non valide.

Était-ce utile?

La solution

Il existe un article à ce sujet:

  

L’approche alternative de Frank consiste à utiliser d’autres fonctionnalités qui   MSMQ fournit, par exemple, des accusés de réception négatifs avec   files d'attente d'administration.

     

Ce qui devrait arriver est que soit:

     
      
  • le message sera remis avec succès à la file d'attente de destination
  •   
  • un accusé de réception négatif (NACK) sera renvoyé au   file d’administration avec une classe de " La file d’attente de destination ne   exister. " (MQMSG_CLASS_NACK_BAD_DST_Q) Sinon, vous pouvez utiliser   journalisation de source négative et, en cas d’absence de livraison, devrait   même classe de NACK dans les "Messages de lettre morte" correspondants système   file d'attente.
  •   
     

En résumé, ne vérifiez pas si la file d'attente existe, mais gérez plutôt   non-remise du message s'il devait s'avérer que la file d'attente ne fonctionne pas   exister.

http://blogs.msdn.com/johnbreakwell/archive/2008/07/31/checking-if-msmq-queues-exist-is-hard-work-so-should -you-bother.aspx

Autres conseils

Que se passe-t-il si le Q distant est contrôlé par un tiers sur lequel vous n’avez aucun contrôle?

Vous feriez mieux d'avoir une sorte de vérification du délai d'attente au lieu de vous fier aux informations distantes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top