Frage

Wie kann ich feststellen, ob eine Remote -Nachrichtenwarteschlange existiert? Die Dokumentation besagt, dass die "existierende" Methode für Remote -Maschinen nicht funktioniert.

Das Folgende ist nicht gültig (ich weiß, dass der Warteschlangenpfad korrekt ist, da ich Nachrichten an die Warteschlange senden kann):

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

Das Problem ist, dass das Senden einer Nachricht an eine Netzwerkadresse, in der keine Hörwarteschlange steht, keine Ausnahme verursacht. Eine Ausnahme für eine ungültige Warteschlangenadresse ist für unsere Anwendung von entscheidender Bedeutung.

War es hilfreich?

Lösung

Es gibt einen Artikel darüber:

Franks alternativer Ansatz besteht darin, andere Funktionen zu nutzen, die MSMQ anbietet, z. B. negative Bestätigungsnachrichten mit Verwaltungswarteschlangen.

Was passieren sollte, ist das auch:

  • Die Nachricht wird erfolgreich an die Zielwarteschlange übermittelt
  • Eine negative Bestätigung (NACK) wird mit einer Klasse von "Die Zielwarteschlange existiert nicht an die Administrationswarteschlange. (MQMSG_CLASS_NACK_BAD_DST_Q) Alternativ können Sie negative Quellenjournalierung verwenden und, wenn dies nicht geliefert wird, dieselbe Nackklasse in der entsprechenden "Dead-Letter-Nachrichten" -Systemwarteschlange sehen.

Überprüfen Sie zusammen, ob die Warteschlange existiert, sondern handhaben Sie stattdessen mit der Nichtlieferung der Nachricht, wenn sich herausstellen sollte, dass die Warteschlange nicht existiert.

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

Andere Tipps

Was ist, wenn die Fernbedienung Q von einem Dritten kontrolliert wurde, bei dem Sie keine Kontrolle haben?

Sie sollten besser eine Art Zeitlimit -Überprüfungen haben, anstatt sich auf Remote -Informationen zu verlassen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top