Beispielprogramm 'Nachrichtenrouting' ausführen

Das Ausführen des Beispielprogramms 'Nachrichtenrouting' kann in zwei Hauptteile unterteilt werden:

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').

Eingabetestnachrichten

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.

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:

  1. Öffnen Sie folgende ENQUEUE-Datei mit der Testnachricht: 'Direct_database_message1'. Stellen Sie sicher, dass das Feld "Port" den Wert 2414 enthält.
  2. 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.
  3. Mit Hilfe des WebSphere MQ-Explorers können Sie wie folgt überprüfen, ob die Nachricht die richtige Warteschlange erreicht hat:
    1. Starten Sie den WebSphere MQ-Explorer
    2. Klicken Sie mit der rechten Maustaste auf den Ordner Queue Managers, und wählen Sie die Option WS-Manager anzeigen aus. Geben Sie 'WBRK6_DEFAULT_QUEUE_MANAGER' ein.
    3. 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 den einzelnen Warteschlangen angezeigt wird. Wenn Sie WebSphere MQ Version 5.3 unter Windows verwenden, müssen Sie beim Aktualisieren des WebSphere MQ-Explorers darauf achten, dass der Ordner Warteschlangen markiert ist und nicht ein konkreter Warteschlangenname, da andernfalls nicht alle Warteschlangen aktualsiert werden.
    4. Verwenden Sie den WebSphere MQ-Explorer für den Rest des Beispielprogramms, um sicherzustellen, dass die Nachrichten an die richtige Position weitergeleitet wurden.
  4. Öffnen Sie die ENQUEUE-Datei 'Direct_database_message2', und schreiben Sie die Nachricht in die Warteschlange.
  5. 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:

  1. Öffnen Sie die ENQUEUE-Datei Memory_cache_message1 mit der Testnachricht, und schreiben Sie die Nachricht in die Warteschlange.
  2. Aktualisieren Sie den WebSphere MQ-Explorer. In der Warteschlange ROUTING.OUT1 wird eine neue Nachricht (insgesamt zwei Nachrichten) angezeigt.
  3. Öffnen Sie die ENQUEUE-Datei Memory_cache_message2 mit der Testnachricht, und schreiben Sie die Nachricht in die Warteschlange.
  4. Aktualisieren Sie den WebSphere MQ-Explorer. In der Warteschlange ROUTING.OUT19 wird eine neue Nachricht (insgesamt zwei Nachrichten) angezeigt.
  5. Bis zu diesem Punkt weist der Nachrichtenfluss genau dieselben Funktionen 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

    1. Geben Sie in einem DB2-Befehlsfenster (unter Windows) bzw. in einer Befehlskonsole (unter Linux) folgenden Befehl ein:

      db2cmd

    2. Geben Sie in der Eingabeaufforderung den Befehl db2 ein, um die DB2-Befehlszeile zu starten.
    3. Stellen Sie eine Verbindung zur Datenbank 'ROUTING' her:

      DB2> connect to ROUTING user Benutzer using Kennwort

      Dabei ist Benutzer ein Benutzer mit Zugriffsberechtigung für die ROUTING-Datenbank. Dabei handelt es
      sich normalerweise um denselben Benutzer, der auch beim Erstellen des Beispielbrokers verwendet wurde. Kennwort steht für das Kennwort dieses Benutzers.

    4. 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

    1. Starten Sie die Befehlszeile 'ij'. Wenn Sie noch keine Stapeldatei für die Befehlszeile 'ij' eingerichtet haben, lesen Sie den Abschnitt Inhalt einer Derby-Datenbank anzeigen.
    2. 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';

  6. Öffnen Sie die ENQUEUE-Datei 'Memory_cache_message2' mit der Testnachricht, und schreiben Sie die Nachricht in die Warteschlange.
  7. 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.
  8. Damit der Nachrichtenfluss die Datenbank erneut liest, öffnen Sie die ENQUEUE-Datei 'Refresh_cache_message1', und schreiben Sie die Nachricht in die Warteschlange.
  9. Wiederholen Sie Schritt 3, um eine Testnachrichten in den Nachrichtenfluss zu senden.
  10. 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 zum 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:

Position des Programms zum Entfernen von Nachrichten aus Warteschlangen

Symbol für die Hauptseite   Zurück zum Beginn des Beispielprogramms