ProHoster > Blog > Verwaltung > Warteschlangen und JMeter: Teilen mit Herausgeber und Abonnenten
Warteschlangen und JMeter: Teilen mit Herausgeber und Abonnenten
Hallo, Habr! Dies ist eine Fortsetzung von mir vorherige Veröffentlichung, in dem ich über Optionen zum Platzieren von Nachrichten in Warteschlangen mithilfe von JMeter sprechen werde.
Wir bauen einen Datenbus für ein großes Bundesunternehmen. Verschiedene Anfrageformate, Transformationen, kompliziertes Routing. Zum Testen müssen Sie viele Nachrichten an die Warteschlange senden. Manuelle Eingriffe sind ein Schmerz, mit dem nicht jeder Chiropraktiker umgehen kann.
Einführung
Obwohl ich diese Schmerzen zunächst ertragen musste. Alles begann mit RFHUtil. Kraftvoll, aber umständlich und beängstigend: Nun, Sie kennen Rus.
Teilweise unverzichtbar, bei aktiver Nutzung jedoch stetig rückläufig.
Bequemes Testen ist damit nicht möglich.
Mit JMeter ist alles einfacher geworden. Nach der ersten Phase des Beherrschens und Eingewöhnens begann die Hoffnung auf ein glückliches Ausprobieren zu dämmern.
Ich nutze aktiv die Sampler JMS Publisher und JMS Subscriber. Im Gegensatz zu JMS Point-to-Point schien dieses Paar bequemer zu verwenden zu sein. Beispielsweise können Sie mit Subscriber im JMS Selector eine Variable angeben, mit Point-to-Point jedoch nicht (oder diese Methode ist nicht sehr offensichtlich).
Probenehmer vorbereiten
JMS-Herausgeber
Setup – Jede Probe. Apache empfiehlt Verwenden Sie diese Option, wenn Warteschlangen/Themen über Variablen angegeben werden.
Ablauf (ms) = 120000. Im Fehlerfall verschwinden Testanfragen nach 2 Minuten aus der Warteschlange.
Nicht persistenten Übermittlungsmodus verwenden? - WAHR. IBM AnsprücheDieser persistente Modus gewährleistet die zuverlässige Erhaltung der übertragenen Nachrichten im Falle eines plötzlichen Ausfalls. Und schnellerer Austausch im nicht persistenten Modus. Für Testzwecke ist die Geschwindigkeit wichtiger.
In jedem Publisher lege ich eine JMS-Eigenschaft fest, die der Abonnent im JMS-Selektor verwendet. Für jede Übermittlung wird im Testplanelement „Benutzerparameter“ ein Zufallswert generiert:
So können Sie sicher sein, dass die richtige Nachricht gelesen wird.
Das letzte „Leerzeichen“ eines vorkonfigurierten JMS Publisher:
JMS-Abonnent
Setup – Jede Probe. Nun, Sie verstehen.
Timeout (ms) = 100000. Wenn die Anfrage nach 100 Sekunden Wartezeit nicht in der Warteschlange ankommt, ist ein Fehler aufgetreten.
Zwischen den Proben anhalten? - WAHR.
JMS Selector – ganz praktisch Ding. Endgültiger JMS-Abonnent:
Umgang mit dem kyrillischen Alphabet in übermittelten Nachrichten. In JMeter wird es nach dem Korrekturlesen standardmäßig schief angezeigt. Um dies zu vermeiden und immer und überall das Große und Mächtige zu genießen, müssen Sie:
Fügen Sie dem JMeter-„Launcher“ ein JVM-Argument hinzu:
-Dfile.encoding=UTF-8
Fügen Sie JSR223 PostProcessor zum Subscriber mit der groovigen Zeile hinzu:
prev.setDataEncoding("UTF-8")
Text senden
Die faulste Option. Geeignet zum Debuggen frisch geschriebener Tests. Oder für den Fall, dass Sie zumindest etwas Kleines verschicken müssen. Wähle eine Option Nachrichtenquelle – Textbereich und platzieren Sie den Nachrichtentext in einem Textblock:
Dateiübertragung
Die häufigste Option. Geeignet für die meisten Szenarien. Wähle eine Option Nachrichtenquelle – Aus Datei und geben Sie den Pfad zur Nachricht im Feld an Datei - Dateiname:
Übertragen einer Datei in ein Textfeld
Die vielseitigste Option. Geeignet für die meisten Szenarien + kann in JMS Point-to-Point verwendet werden, wo es keine zweite Sendeoption gibt:
Übergabe eines Byte-Arrays
Die schwierigste Option. Geeignet zur Überprüfung der unfehlbar präzisen Übertragung von Anfragen bis auf das Byte, ohne Verzerrungen, SMS und Störungen. Dies ist im Standard-JMeter nicht möglich. hier Mir wurde auf jeden Fall davon erzählt.
Also musste ich herunterladen Quellen und modifizieren Code JMS-Abonnent.
In der Methode ersetzt extractContent(..) Linie:
buffer.append(bytesMessage.getBodyLength() + " bytes received in BytesMessage");
Jetzt müssen nur noch ein paar JSR223-Sampler hinzugefügt werden. Die erste besteht darin, vor dem Publisher/Subscriber-Paar eine DAT-Datei mit zufälligen Bytes zu erstellen:
Ich habe vier Möglichkeiten beschrieben, Nachrichten an Warteschlangen zu senden, die ich jeden Tag in der Praxis verwende. Ich hoffe, dass diese Informationen Ihr Leben einfacher machen. Als Fortsetzung möchte ich über meine Erfahrungen beim Testen einer Börse sprechen, bei der sich an einem Ende eine Warteschlange und am anderen Ende eine Datenbank oder ein Dateisystem befindet.
Sparen Sie Zeit. Und vielen Dank für Ihre Aufmerksamkeit.