Mit einem LTERM-Bündel (Verbindungsbündel) verteilen Sie Asynchron-Nachrichten an eine logische Partner-Anwendung gleichmäßig auf mehrere parallele Verbindungen. Hinter der logischen Partner-Anwendung können sich auch mehrere Instanzen der Partner-Anwendungen (z.B. UTM-Cluster-Anwendung) verbergen. Eine solche Verteilung kann dann sinnvoll sein, wenn eine UTM-Anwendung sehr viele asynchrone Nachrichten an eine Partner-Anwendung schickt und dadurch eine Transportverbindung überlastet werden könnte.
Sie definieren ein LTERM-Bündel mit LTERM- und PTERM-Anweisungen, wie bereits im Abschnitt "Clients über LTERM-Partner anschließen" dargestellt. Der folgende Text beschreibt die Punkte, die Sie für LTERM-Bündel zusätzlich beachten müssen.
Ein LTERM-Bündel besteht aus einem Master-LTERM und mehreren zugeordneten Slave-LTERMs. Die Slave-LTERMs, die einem PTERM mit PTYPE=APPLI oder PTYPE=SOCKET zugeordnet sein müssen, werden per Generierung einem Master-LTERM zugewiesen.
Bild 10: Beispiel LTERM-Bündel
FPUT-/DPUT-Aufrufe
FPUT-Aufrufe, die Teilprogramme an das Master-LTERM richten, werden beim Transaktionsende einem der Slave-LTERMs zugewiesen:
openUTM versucht dabei zuerst, ein Slave-LTERM zu finden, zu dessen PTERM eine Verbindung aufgebaut ist. Findet openUTM keine solche Verbindung, so wird ein Slave-LTERM gesucht, das mit RESTART=YES generiert ist.
Findet openUTM ein Slave-LTERM, dann werden alle asynchronen Nachrichten, die in dieser Transaktion an dieses Master-LTERM gerichtet wurden, dem Slave-LTERM zugeordnet.
Findet openUTM kein solches Slave-LTERM, werden alle an das Master-LTERM gerichteten Asynchron-Nachrichten verworfen.
Ist ein Slave-LTERM mit RESTART=NO generiert und die Verbindung wird abgebaut oder geht verloren, werden alle Nachrichten verworfen, die an diesem LTERM zur Ausgabe anstehen.
Teilprogramme können FPUT- und DPUT-Aufrufe auch direkt an die Slave-LTERMs richten. Diese Nachrichten unterliegen dann allerdings nicht dem oben beschriebenen Verteilalgorithmus.
Anzeige im KB-Kopf
Über die Slave-LTERMs eines LTERM-Bündels können auch Nachrichten empfangen werden. In Vorgängen, die für empfangene Nachrichten gestartet werden, zeigt openUTM im KB-Kopf immer den Namen des LTERM an, über das die Nachricht empfangen wurde. Für LTERM-Bündel gilt also:
In Vorgängen, die für Nachrichten gestartet werden, die über ein Slave-LTERM empfangen wurden, wird im KB-Kopf der Name dieses Slave-LTERMs angezeigt und nicht der Name des Master-LTERMs.
Mit Hilfe des KDCS-Aufrufs INIT PU können Sie sich darüber informieren, ob das LTERM im KB-Kopf Slave eines LTERM-Bündels ist und wie das Master-LTERM heißt (siehe openUTM-Handbuch „Anwendungen programmieren mit KDCS“).
LTERM-Anweisung im Abschnitt "LTERM - LTERM-Partner für Clients und Drucker definieren" |
BUNDLE=
Gibt bei der Definition eines Slave-LTERM das zugehörige Master-LTERM an. Das hier angegebene Master-LTERM muss in einer vorangegangenen LTERM-Anweisung generiert worden sein:
LTERM
master, ...
LTERM
slave1, BUNDLE=
master, ...
LTERM
slave2, BUNDLE=
master, ...
PTERM
slave1, LTERM=
slave1, PTYPE=APPLI|SOCKET, ...
PTERM
slave2, LTERM=
slave2, PTYPE=APPLI|SOCKET, ...
RESTART=
Bestimmt die Behandlung von Asynchron-Nachrichten bei Verbindungsabbau zum Client. Nachrichten, die an einem LTERM zur Ausgabe anstehen, das mit RESTART=NO generiert ist, werden ggf. verworfen (siehe Abschnitt "FPUT-/DPUT-Aufrufe").
Beim Zuweisen der Asynchron-Nachrichten zu einem Slave-LTERM am Transaktionsende werden die Einstellungen von QAMSG und RESTART am Slave-LTERM ausgewertet.
Alle Slave-LTERMs in einem LTERM-Bündel sollten identisch generiert werden. KDCDEF überprüft dies jedoch nicht.
PTERM-Anweisung im Abschnitt "PTERM - Eigenschaften von Clients und Druckern und Zuordnung zum LTERM-Partner festlegen" |
PTYPE=APPLI | SOCKET
Alle PTERMs eines LTERM-Bündels müssen mit PTYPE=APPLI oder
PTYPE=SOCKET generiert werden. Für alle PTERMs eines LTERM-Bündels muss hier derselbe PTYPE angegeben werden.USAGE=D (nur BS2000-Systeme)
Alle PTERMs eines LTERM-Bündels müssen mit USAGE=D generiert werden.