Beispielprogramm 'Nachrichtenrouting' ausführen
Das Ausführen des Beispielprogramms 'Nachrichtenrouting' kann in zwei
Hauptteile unterteilt werden:
- Verwenden einer direkten Verbindung zur Datenbanktabelle, um die
Weiterleitungsinformationen für jede verarbeitete Nachricht einzeln abzurufen
- Verwenden von gemeinsamen Variablen, um eine Kopie der Datenbanktabelle im
Nachrichtenfluss zu speichern, die von jeder verarbeiteten Nachricht genutzt werden
kann
Die beiden Teile werden einzeln beschrieben. Alle in diesem Abschnitt erwähnten
Testnachrichten finden Sie im Verzeichnis 'Test messages'
(Testnachrichten) unter dem Nachrichtenflussprojekt 'Message
routing sample message flows' (Nachrichtenflüsse für das Beispielprogramm
'Nachrichtenrouting').
Alle Testnachrichten, die beim Ausführen dieses Beispielprogramms verwendet werden,
basieren auf folgendem Format:
<SaleEnvelope>
<Header>
<SaleListCount>1</SaleListCount>
</Header>
<SaleList>
<Invoice>
<Initial>T</Initial>
<Initial>D</Initial>
<Surname>Montana</Surname>
<Item><Code>00</Code>
<Code>01</Code><Code>02</Code>
<Description>Twister</Description>
<Category>Games</Category>
<Price>00.30</Price>
<Quantity>01</Quantity>
</Item>
<Item>
<Code>02</Code><Code>03</Code><Code>01</Code>
<Description>The Times Newspaper</Description>
<Category>Books and Media</Category>
<Price>00.20</Price>
<Quantity>01</Quantity>
</Item>
<Balance>00.50</Balance>
<Currency>Sterling</Currency>
</Invoice>
</SaleList>
<Trailer>
<CompletionTime>12.00.00</CompletionTime>
</Trailer>
</SaleEnvelope>
Die Felder '<Initial>' und '<Surname>' werden für die Weiterleitung der
Nachricht verwendet.
Das Beispielprogramm ausführen
Eine direkte Verbindung zur Datenbanktabelle zum Weiterleiten der Nachricht
verwenden
Für diesen Teil des Beispielprogramms wird der Nachrichtenfluss
'Routing_using_database_table' verwendet. Er enthält eine Eingabewarteschlange:
'ROUTING.DATABASE.IN1'. Der Nachrichtenfluss kann die
Nachricht an eine von 20 Ausgabewarteschlangen weiterleiten, je nachdem, was in der
Nachricht angegeben ist ('ROUTING.OUT' gefolgt von einer
Zahl zwischen 1 und 19 oder die Warteschlange
'ROUTING.DEFAULT'). Gehen Sie folgendermaßen vor, um diesen
Teil des Beispielprogramms auszuführen:
- Öffnen Sie folgende ENQUEUE-Datei mit der Testnachricht: 'Direct_database_message1'.
- Klicken Sie auf 'In Warteschlange schreiben'. Es wird
eine Nachricht an die Warteschlange 'ROUTING.DATABASE.IN1'
gesendet. Der Nachrichtenfluss leitet die Nachricht an die Warteschlange
'ROUTING.OUT1' weiter.
- Mit Hilfe des WebSphere MQ-Explorers können Sie überprüfen, ob die Nachricht die
richtige Warteschlange erreicht hat:
- Starten Sie den WebSphere MQ-Explorer.
- Klicken Sie mit der rechten Maustaste auf den Ordner des WS-Managers,
und wählen Sie die Option zum Anzeigen des WS-Managers aus. Geben Sie
'WBRK6_DEFAULT_QUEUE_MANAGER' ein.
- Erweitern Sie die Ordner unter dem WS-Manager, und wählen Sie
die Option für Warteschlangen aus. Aktualisieren Sie die
Warteschlangenanzeige, damit die aktuelle Anzahl der Nachrichten in jeder
Warteschlange angezeigt wird.
- Verwenden Sie den WebSphere MQ-Explorer für den Rest des Beispielprogramms, um
sicherzustellen, dass die Nachrichten an die richtige Position weitergeleitet wurden.
- Stellen Sie beim Aktualisieren des WebSphere MQ-Explorers sicher, dass der Ordner
für Warteschlangen und nicht eine einzelne Warteschlange
ausgewählt ist, weil sonst nicht alle angezeigten Warteschlangen aktualisiert werden.
- Öffnen Sie die ENQUEUE-Datei
'Direct_database_message2', und schreiben Sie die
Nachricht in die Warteschlange.
- Aktualisieren Sie den WebSphere MQ-Explorer. In der Warteschlange
'ROUTING.OUT19' wird eine Nachricht angezeigt.
Wenn alle zuvor beschriebenen Schritte erfolgreich ausgeführt wurden, ist der erste Teil
des Beispielprogramms damit beendet. Sie können den ESQL-Code im Nachrichtenfluss Routing_using_database_table anzeigen, um
nachzuvollziehen, wie die Weiterleitung ausgeführt wurde.
Eine zwischengespeicherte Version der Datenbanktabelle zum Weiterleiten der
Nachricht verwenden
Für diesen Teil des Beispielprogramms wird der Nachrichtenfluss
'Routing_using_memory_cache' verwendet. Der
Nachrichtenfluss enthält die beiden Eingabewarteschlangen
'ROUTING.MEMORY.IN1' und
'ROUTING.REFRESH.IN1' und kann die Nachricht an eine von 20
Ausgabewarteschlangen weiterleiten, je nachdem, was in der Nachricht angegeben ist
('ROUTING.OUT'
gefolgt von einer Zahl zwischen 1 und 19 oder die Warteschlange
'ROUTING.DEFAULT'). Die Weiterleitungslogik ist mit der
Logik bei Verwendung der nicht zwischengespeicherten Version identisch. Der einzige
Unterschied besteht darin, dass die Datenbank unter Verwendung gemeinsamer Variablen
gespeichert wird. Führen Sie folgende Schritte aus, um diesen Teil des Beispielprogramms
auszuführen:
- Öffnen Sie die ENQUEUE-Datei 'Memory_cache_message1'
mit der Testnachricht, und schreiben Sie die Nachricht in die Warteschlange.
- Aktualisieren Sie den WebSphere MQ-Explorer. In der Warteschlange
'ROUTING.OUT1' wird eine neue Nachricht (insgesamt zwei
Nachrichten) angezeigt.
- Öffnen Sie die ENQUEUE-Datei 'Memory_cache_message2'
mit der Testnachricht, und schreiben Sie die Nachricht in die Warteschlange.
- Aktualisieren Sie den WebSphere MQ-Explorer. In der Warteschlange
'ROUTING.OUT19' wird eine neue Nachricht (insgesamt zwei
Nachrichten) angezeigt.
- Bis zu diesem Punkt weist der Nachrichtenfluss genau dieselbe Funktionalität auf,
wie der Nachrichtenfluss im ersten Teil des Beispielprogramms, obwohl jetzt eine
zwischengespeicherte Version der Datenbanktabelle verwendet wird. Um die Auswirkungen bei
Verwendung des Caches zu verdeutlichen, wird die Datenbanktabelle geändert, um zu zeigen,
wie die Cache-Version aktualisiert werden kann. Gehen Sie folgendermaßen vor, um die
Datenbanktabelle zu ändern:
DB2
- Starten Sie eine DB2-Befehlskonsole. Geben Sie in dieser Befehlskonsole Folgendes ein:
db2cmd
- Geben Sie in der Eingabeaufforderung 'db2' ein, um die DB2-Eingabeaufforderung
zu aufzurufen.
- Stellen Sie eine Verbindung zur Datenbank
'ROUTING' her:
DB2>connect to ROUTING
- Aktualisieren Sie den letzten Eintrag in der Tabelle 'routing_table'
dahin gehend, dass in die Warteschlange 'ROUTING.OUT18'
geschrieben wird.
DB2> update routing_table set
queue_name='ROUTING.OUT18' where Variable3='Braithwaite'
Derby
- Starten Sie in einer Befehlskonsole die Befehlszeile 'ij'. Wenn Sie noch keine Stapeldatei für die Befehlszeile 'ij' eingerichtet haben, lesen Sie den Abschnitt Inhalt einer Derby-Datenbank anzeigen.
- Aktualisieren Sie den letzten Eintrag in der Tabelle 'routing_table', so dass in die Warteschlange ROUTING.OUT18 geschrieben wird:
ij>update routing_table set queue_name='ROUTING.OUT18' where Variable3='Braithwaite';
- Öffnen Sie die ENQUEUE-Datei 'Memory_cache_message2'
mit der Testnachricht, und schreiben Sie die Nachricht in die Warteschlange.
- Aktualisieren Sie den WebSphere MQ-Explorer. In der Warteschlange
'ROUTING.OUT19' wird eine neue Nachricht (insgesamt drei
Nachrichten) angezeigt. Dabei ist zu beachten, dass die Nachricht nicht an den neuen
Warteschlangennamen weitergeleitet wird, weil die Datenbanktabelle noch nicht erneut
gelesen wurde.
- Damit der Nachrichtenfluss die Datenbank erneut liest, öffnen Sie die
ENQUEUE-Datei 'Refresh_cache_message1', und schreiben
Sie die Nachricht in die Warteschlange.
- Wiederholen Sie Schritt 3, um eine Testnachrichten in den Nachrichtenfluss zu senden.
- Aktualisieren Sie den WebSphere MQ-Explorer. In der Warteschlange
'ROUTING.OUT18' wird eine neue Nachricht (insgesamt eine
Nachricht) angezeigt. Demnach ist die zwischengespeicherte Datenbanktabelle jetzt
aktualisiert worden.
Die Schritte 5 bis 10 können wiederholt werden, wobei für das Attribut 'queue_name'
in der Datenbank jeweils einer der anderen verfügbaren Warteschlangennamen angegeben
wird. Es muss nicht unbedingt die Nachricht
'Refresh_cache_message1' verwendet zu werden. Stattdessen
kann auch der Nachrichtenfluss gestoppt und erneut gestartet werden. Auch auf diese
Weise wird die zwischengespeicherte Datenbanktabelle aktualisiert.
Wenn alle zuvor beschriebenen Schritte erfolgreich ausgeführt wurden, ist das
Beispielprogramm damit beendet. Sie können den ESQL-Code im Nachrichtenfluss Routing_using_memory_cache anzeigen, um
nachzuvollziehen, wie das Speichern der Datenbank mit Hilfe gemeinsamer Variablen ausgeführt
wurde.
Erläuterung der Ergebnisse
Das Beispielprogramm 'Nachrichtenrouting' leitet die Eingabetestnachricht an
verschiedene Ausgabewarteschlangen weiter, ohne die Ausgabe zu verändern. Die
Ausgabenachricht ist mit der Eingabetestnachricht identisch.
In den für beide Teile angegebenen Schritten werden die Zielwarteschlangen für die
Nachrichtenweiterleitung festgelegt. Mit Hilfe des WebSphere MQ-Explorer kann (wie zuvor
in der Anleitung beschrieben) kann überprüft werden, ob die Nachrichten an die richtigen
Warteschlangen weitergeleitet wurden. Darüber hinaus kann der Inhalt der Nachrichten
in den Warteschlangen überprüft werden. Dazu wird das Programm zum
Entfernen von Nachrichten aus Warteschlangen verwendet, das zu WebSphere Message Brokers
Toolkit gehört. Um das Programm zum Entfernen von Nachrichten aus Warteschlangen
aufzurufen, klicken Sie in der Toolkit-Funktionsleiste auf das entsprechende Symbol:
Zurück zum Beginn des Beispielprogramms