Informationen zum untergeordneten Routing-Fluss für das Muster Record Distribution to WebSphere MQ: one-way (Verteilung von Datensätzen an WebSphere MQ: unidirektional).
Das Verhalten des untergeordneten Routing-Nachrichtenflusses hängt vom Wert des Musterparameters Routing ab:
Wenn Kein Routing ausgewählt ist, wird ein einzelner MQOutput-Knoten erstellt und mit den Werten der Musterparameter Ausgabe-WS-Manager und Ausgabewarteschlange konfiguriert. Der Routing-Nachrichtenfluss ist ein untergeordneter Nachrichtenfluss, der einen Pass-through-Knoten enthält. Es ist sowohl ein Standard- als auch ein Routenterminal enthalten, sodass dieser untergeordnete Nachrichtenfluss mit allen anderen Typen eines untergeordneten Routing-Nachrichtenflusses konsistent ist, es wird jedoch nur das Routenterminal verwendet.
Eine Gruppe von vier Parametern, die eine Route definieren:
Für jede Route, die definiert ist, wird ein Ausgabeterminal für den untergeordneten Routing-Nachrichtenfluss und ein MQOutput-Knoten erstellt und verbunden.
Der untergeordnete Routing-Nachrichtenfluss enthält einen Route-Knoten, für den ein Filter konfiguriert ist, der die Nachricht zum ersten Ausgabeterminal weiterleitet, wenn die Bedingung KeyLocation = Key Value erfüllt ist. Wenn ein Nachrichtenelement keiner der Routen entspricht, wird diese Situation in einer Variablen in der Baumstruktur der Brokerumgebung aufgezeichnet und die Nachricht wird das Standardterminal übermittelt.
Wenn der XPath-Ausdruck, der eine Schlüsselposition definiert, ein Namespace-Qualifikationsmerkmal enthält, muss der Namespace-Tabelle die Anweisung hinzugefügt werden, mit welcher der Namespace definiert wird.
Möglicherweise wird im Route-Knoten eine Warnung mit ungefähr folgendem Wortlaut angezeigt: Filtertabelle: Filtermuster: Das Schemaelement Elementname wurde nicht im XPath Schlüsselposition = Schlüsselwert gefunden. Bei der Implementierung und Ausführung Ihrer Musterinstanz spielt diese Warnung keine Rolle.
Mit der Option Routen angeben können Sie eine Reihe verschiedener Routen angeben.
Wenn dieser Wert ausgewählt ist, werden Routen bestimmt, indem der WS-Manager und die Warteschlange in einer Datenbank-Routing-Tabelle mithilfe von Werten aus den Nachrichtendaten gesucht werden. Es erfolgt kein direkter Zugriff auf die Routing-Tabelle, sondern die Tabelle wird im Speicher gelesen und zwischengespeichert, um die Effizienz zu erhöhen.
Wenn dieser Wert ausgewählt ist, wird für den untergeordneten Routing-Nachrichtenfluss ein einziges Ausgabeterminal erstellt. Das Ausgabeterminal wird mit einem MQOutput-Knoten verbunden, der so konfiguriert ist, dass er eine Liste mit Zielen annimmt, die durch die Suche in der Brokerumgebungsbaumstruktur platziert wurden.
Der untergeordnete Routing-Nachrichtenfluss überprüft, ob der Cache aktualisiert werden muss, indem er überprüft, ob der Wert der gemeinsam genutzten Zeilenvariablen CacheQueueTable.valid auf NULL gesetzt ist. Die Variable wird auf NULL gesetzt, wenn der Nachrichtenfluss gestartet wird und wenn Cache-Aktualisierung aktiviert ist und eine Aktualisierungsnachricht an die Aktualisierungswarteschlange gesendet wurde. Aktualisierungsnachrichten setzen den Wert auf NULL.
Wenn der Cache aktualisiert werden muss, wird die Tabelle ROUTING_TABLE der Datenquelle, die im Musterparameter Routing-Datenquelle angegeben ist, durchsucht, um alle Zeilen zu finden, die dem Routing-Kontext für diesen Nachrichtenfluss entsprechen. Der Routing-Kontext wird durch den Musterparameter Routing-Datenkontext definiert und die Zeilen, in denen das Feld ROUTING_CONTEXT diesem Parameter entspricht, werden in einen Speichercache eingelesen, was atomar durchgeführt wird, um zu verhindern, dass Suchen ausgeführt werden, während sich der Cache in einem inkonsistentem Status befindet.
Die zwischengespeicherten Daten haben folgende Struktur:
VARIABLE1, VARIABLE2, QUEUE_MANAGER, QUEUE_NAME
Die Suche wird ausgeführt, indem mithilfe von ESQL-Ausdrücken, die als Musterparameter definiert sind, ein oder zwei Schlüsselwerte aus dem Nachrichtenelement extrahiert werden. Die Suche wird mithilfe einer Anweisung im folgenden Format definiert:
SET KEY = <Musterparameter>
Wenn ein einzelner Schlüssel angegeben wird, um eine Zeile oder Zeilen aus den Routing-Daten auszuwählen, verwenden Sie für die Auswahl die folgende WHERE-Klausel:
WHERE S.VARIABLE1 = KEY1
Wenn ein zweiter Schlüssel angegeben wird, verwenden Sie für die Auswahl die folgende WHERE-Klausel:
WHERE S.VARIABLE1 = KEY1 und S.VARIABLE2 = KEY2
Durch diese Auswahl wird der Warteschlangenmanager und die Warteschlange in der Liste mit Zieladressen festgelegt, die vom MQOutput-Knoten verwendet wird. Es können mehrere Zeilen zurückgegeben werden und die Zieldaten enthalten alle ausgewählten Ziele. Wenn keine Übereinstimmung gefunden wird, tritt ein Routing-Fehler auf und die Nachricht wird an das Fehlerterminal des untergeordneten Routing-Nachrichtenflusses übermittelt.