2010-05-13 9 views
5

Meine in C# geschriebene Anwendung nutzt die Klasse MessageQueue in .NET für die Kommunikation von Nachrichten mit einer anderen Remoteanwendung und die MessageQueue sollte immer mit der remote messageQueue "verbunden" (Heartbeat vorhanden) sein unter allen Umständen. Wenn es nicht "verbunden" ist, signalisiert es, dass etwas nicht stimmt, und meine Anwendung muss einige Aktionen ausführen, z. B. das Aktualisieren eines Ereignisprotokolls.Wie erkenne ich einen Verbindungsabbruch mit MessageQueue

Gibt es in der Klasse MessageQueue eine Methode, mit der solche Verbindungsunterbrechungen erkannt werden können?

+0

Veröffentlichen Sie in einer lokalen oder einer fernen Warteschlange? Ist es öffentlich oder privat? – stuartd

+0

Die Nachrichten werden aus einer lokalen privaten Warteschlange abgerufen. – Lopper

Antwort

3

Message Queuing ist sehr dazu gedacht, Unterbrechungen zu überleben. Und unterstützt das Routing durch mehrere Maschinen. Daher kann nicht überprüft werden, ob eine Live-Verbindung vorhanden ist. Sie sollten MSMQ wahrscheinlich nicht in Betracht ziehen, wenn dies eine Voraussetzung ist, TCP wäre eine bessere Mausefalle.

Sie könnten asking for acknowledgment Ihrer Nachricht und Time-out darüber betrachten. Das ist jedoch passiv. Ein Herzschlag ist möglich, aber stellen Sie sicher, dass Sie eine separate nicht-transaktionale-Warteschlange verwenden.

Verwandte Themen