Frage

Wir haben MSMQ nach persistentem "Push" -Server zur Client -Kommunikation untersucht. Es kann bis zu 1000 Clients pro Server geben.

In einem unserer Tests haben wir eine kleine Nachricht an 300 Offline -Clients gesendet und dann eine Nachricht an einen Online -Kunden gesendet. Die letzte Nachricht wurde um über 40 Minuten verzögert, da sich MSMQ durch die unzustellbaren Nachrichten (über das MMC beobachtet) bearbeitete. Wir verwenden auch MSMQ für den Rückweg, wo er gut funktioniert.

Gibt es eine Möglichkeit, MSMQ zu diesem Verwendungsmuster zu passen, indem die Zeit, die es versucht, sich mit einem Offline -Host zu verbinden? Wenn nicht, gibt es noch andere Warteschlangenprodukte, die besser passen, oder rollt es Ihre eigene Zeit? Der RAW -Durchsatz hat keine Priorität, sondern die Anzahl der ausgehenden Warteschlangen und die Vorhersehbarkeit/maximale Latenz, ebenso wie der Speicherausdruck der Clients (die ziemlich alte Maschinen sein können).

War es hilfreich?

Lösung 2

Unsere Lösung bestand darin, die Warteschlangen programmgesteuert an Maschinen zu pausieren, die offline waren (wir hatten bereits eine UDP -Nachricht, um festzustellen, ob Clients im MSMQ -Management -COM -Schnittstellen verfügbar sind).

Mit Warteschlangen zu bekannten diskonierten Hosts hielt MSMQ viel weniger Zeit durch, um sich unzustellbare Nachrichten zu bearbeiten.

Es war auch eine schöne Lektion, ein bisschen seitliches Denken anzuwenden, wenn Sie Tests zur Bewertung von Technologien überdenken! Im Allgemeinen würde ich MSMQ für Server zu Client Comms aufgrund dieses Problems nicht empfehlen - ich würde sagen, dass die Umfragen von Clients vorzuziehen wären.

Andere Tipps

Sie können die Leistung erhöhen, indem Sie das Journaling deaktivieren und die Nachrichten nicht wiederherstellbar machen. Wenn Sie sich nicht darum kümmern, dass Nachrichten verloren gehen.

Eine schnelle Lösung mit Ihrem Offline -Szenario könnte darin bestehen, die Anzahl der für MSMQ verfügbaren Threads zu erhöhen, bei denen ein Thread pro ausgehender Warteschlange verwendet wird. Jeder Offline -Verbindungsversuch dauert eine Weile und blockiert einen Faden. http://technet.microsoft.com/en-us/library/cc957498.aspx Versuchen Sie, so viele Fäden wie möglich darauf zu werfen.

Meine Kollegen haben mit Activemq zusammengearbeitet und gesagt, es sei viel flexibler, während sie besser abschneiden. Ich habe nicht persönlich damit gearbeitet, aber ich würde es untersuchen, wenn Sie nicht an .NET gebunden sind.

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