In der Architektur moderner E-Business-Anwendungen (SOA) gewinnen lose gekoppelte Systeme immer mehr an Bedeutung. Reliable Messaging (Verlässliche Nachrichtenübermittlung) ist eine wichtige Technologie bei dieser Art von Systemen.
Reliable RPC ist die Natural RPC-Implementierung eines Reliable Messaging-Systems. Sie kombiniert die Natural RPC-Technologie mit der Persistenz, die mittels Units of Work (UOWs) implementiert wird, die vom EntireX Broker angeboten werden. Reliable RPC zeichnet sich durch folgende Merkmale aus:
Der Natural RPC-Client führt ein CALLNAT-Statement aus, ohne auf eine
Antwort des Servers zu warten (die RPC-Nachricht wird im asynchronen Modus
gesendet).
Ein RPC-Server muss zum Zeitpunkt der Ausführung des CALLNAT nicht aktiv
sein.
Die Reliable RPC-Nachricht wird im Persistent Store des EntireX Brokers gespeichert, bis ein RPC Server verfügbar ist.
Der Natural RPC Server führt den Reliable RPC aus, indem er das angeforderte Subprogramm aufruft, sendet aber keine Antwort an den RPC-Client.
Ein Natural RPC-Client kann den Status der gesendeten Reliable RPC-Nachrichten abfragen.
Ein Natural RPC-Client kann eine Reliable RPC-Nachricht an einen EntireX RPC-Server senden.
Ein Natural RPC Server kann eine Reliable RPC-Nachricht von einem EntireX RPC-Client empfangen.

Der Natural RPC-Client für einen Reliable RPC wird auf die gleiche Weise konfiguriert wie bei einem normalen Natural RPC. Dieselbe Natural RPC-Client-Sitzung kann Standard-RPC-Anforderungen (Requests) und zuverlässige RPC-Nachrichten senden.
Damit ein Natural RPC-Client Reliable RPC verwenden kann, muss der Natural RPC-Client die
Anwendungsprogrammierschnittstelle USR2071N für eine explizite EntireX Broker-Anmeldung
verwenden. Dies bedeutet, dass der RPC/NTRPC-Schlüsselwort-Subparameter ACIVERS auf
2 oder höher gesetzt sein muss.
Reliable RPC wird verwendet, um Nachrichten an einen persistenten EntireX Broker-Dienst zu senden. Die Nachrichten werden durch den Parameterdatenbereich (PDA) des Aufrufers beschrieben und dürfen nur Ausgabeparameter enthalten. Ein Parameter wird auf eine der folgenden Arten als "Ausgabe" definiert:
Wenn ein Natural-Interface-Objekt verwendet wird:
Setzen Sie im Feld Attr auf dem Bildschirm Interface Object Generation der
SYSRPC Utility das Attribut des Parameters auf O
(Output/Ausgabe).
Anmerkung
Wenn Ihre Parameterdefinitionen keine Gruppenstrukturen enthalten, müssen Sie vor
der Generierung des Interface-Objekts das Attribut COMPAT auf
IDL setzen; siehe Interface-Objekte generieren - Allgemeine Aspekte
in der SYSRPC Utility-Dokumentation.
Wenn kein Natural-Interface-Objekt verwendet wird:
Verwenden Sie den Session-Parameter AD=O in dem CALLNAT-Statement.
Anmerkung
Wenn Sie einen EntireX RPC-Server aufrufen wollen und die entsprechende IDL-Datei
Gruppenstrukturen enthält, müssen Sie ein Natural Interface-Objekt verwenden, und die
Parameterdefinition für das Natural Interface-Objekt muss der Gruppenstruktur der
IDL-Datei entsprechen.
Wenn Sie ein Natural-Interface-Objekt aus einer IDL-Datei generieren, wird das Attribut des Parameters aus der IDL-Datei übernommen. In diesem Fall darf die IDL-Datei nur Inbound-Parameter (aus Sicht des Servers) enthalten.
Reliable RPC wird zur Laufzeit aktiviert. Der Client muss einen von zwei verschiedenen Modi einstellen, bevor er eine Reliable RPC-Anforderung ausgibt:
AUTO_COMMIT
CLIENT_COMMIT
Während AUTO_COMMIT jede Nachricht nach dem Senden implizit festschreibt,
kann eine Reihe von RPC-Nachrichten, die in einer Arbeitseinheit (Unit of Work, UOW)
gesendet werden, im Modus CLIENT_COMMIT explizit festgeschrieben (Commit)
oder zurückgenommen (Rollback) werden.
Dazu bietet Natural folgende Anwendungsprogrammierschnittstellen (APIs):
Mit der API USR6304N wird der Modus für Reliable RPC eingestellt.
Mit der API USR6305N kann eine Arbeitseinheit, die mit
CLIENT_COMMIT erstellt wurde, bestätigt (Commit) oder zurückgesetzt
(Rollback) werden.
Um USR6304N zu verwenden:
Kopieren Sie das Subprogramm USR6304N aus der Library
SYSEXT in die Library SYSTEM oder in die Steplib Library
oder in eine beliebige Anwendung in der Client-Umgebung.
Geben Sie mit dem Statement DEFINE
DATA die folgenden Parameter an:
| Parameter | I/O | Format | Beschreibung | |
|---|---|---|---|---|
P-FUNC |
I | A01 | Funktionscode. Mögliche Werte: | |
P (Put)
|
Legt den Modus für Reliable RPC fest. Der Modus gilt für alle nachfolgenden Aufrufe. | |||
G (Get)
|
Ruft den zuvor festgelegten Modus ab. | |||
P-MODE |
I/O | N01 | Modus für Reliable RPC: | |
0 |
Kein Reliable RPC (Standard-RPC-Ausführung). | |||
1 |
Reliable RPC
AUTO_COMMIT |
|||
2 |
Reliable RPC CLIENT_COMMIT
|
|||
P-RC |
O | N04 | Rückgabecode | |
P-MESSAGE |
O | A80 | Nachrichtentext | |
Geben Sie im aufrufenden Programm auf der Client-Seite das folgende Statement an:
CALLNAT 'USR6304N' P-FUNC P-MODE P-RC P-MESSAGE
Anmerkung:
Der Modus CLIENT_COMMIT kann nicht geändert werden, wenn
Reliable RPC-Nachrichten zwar gesendet, aber noch nicht einem Commit oder Roll Back
unterzogen wurden.
Um USR6305N zu verwenden:
Kopieren Sie das Subprogramm USR6305N aus der Library
SYSEXT in die Library SYSTEM oder in die Steplib Library
oder in eine beliebige Anwendung in der Client-Umgebung.
Geben Sie mit dem Statement DEFINE
DATA die folgenden Parameter an:
| Parameter | I/O | Format | Beschreibung | |
|---|---|---|---|---|
P-FUNC |
I | A08 | Funktionscode. Mögliche Werte: | |
COMMIT |
Commit der gesendeten zuverlässigen RPC-Nachrichten. Die Nachrichten sind nun für einen RPC-Server verfügbar. | |||
ROLLBACK |
Die bereits gesendeten Reliable RPC Nachrichten werden verworfen. | |||
P-RC |
O | N04 | Rückgabecode | |
P-MESSAGE |
O | A80 | Nachrichtentext | |
Geben Sie im aufrufenden Programm auf der Client-Seite folgendes Statement an:
CALLNAT 'USR6305N' P-FUNC P-MODE P-RC P-MESSAGE
Der Natural RPC Server für Reliable RPC wird auf dieselbe Weise konfiguriert wie für normales Natural RPC. Dieselbe Natural RPC Server-Sitzung kann Standard-RPC-Anforderungen (Requests) und Reliable RPC-Nachrichten verarbeiten.
Um die Verarbeitung von Reliable RPC-Nachrichten zu ermöglichen, muss der RPC/NTRPC-Schlüsselwort-Subparameter ACIVERS auf
2 oder höher gesetzt werden.
Um den Status gesendeter Reliable RPC-Nachrichten anzuzeigen, steht in Natural die
Anwendungsprogrammierschnittstelle USR6306N zur Verfügung:
Mit USR6306N können Sie den Status aller Reliable RPC-Nachrichten
abrufen, die Sie zuvor unter Ihrer Benutzerkennung gesendet haben.
USR6306N muss nicht unbedingt innerhalb der Natural-Sitzung aufgerufen
werden, in der die RPC-Nachrichten versendet wurden.
Wenn USR6306N in einer anderen Natural-Sitzung verwendet wird, muss
zunächst die Anwendungsprogrammierschnittstelle USR2071N verwendet
werden, um sich mit derselben Benutzerkennung am EntireX Broker anzumelden, mit der
die Reliable RPC-Nachrichten versendet wurden.
Die Reliable RPC-Nachrichten werden durch EntireX Broker-Arbeitseinheiten (Units of Work, UOW) implementiert. Die Informationen über Reliable RPC-Nachrichten sind daher Informationen über UOWs.
Um USR6306N zu verwenden:
Kopieren Sie das Subprogramm USR6306N aus der Library
SYSEXT in die Library SYSTEM oder in die Steplib Library
oder in eine beliebige Anwendung in der Client-Umgebung.
Geben Sie mit dem DEFINE
DATA-Statement die folgenden Parameter an:
| Parameter | I/O | Format | Beschreibung |
|---|---|---|---|
P-UOW-ID-IN |
I | A16 | ID für die UOW, die abgerufen werden soll. Mögliche
Werte:
Kennung (UOWID) einer Arbeitseinheit (UOW).
|
P-USER-ID |
O | A32 | Benutzerkennung des Benutzers, der die UOWs erstellt hat. |
P-BROKER-ID |
O | A32 | Broker-ID des EntireX Brokers, der die UOWs hostet. |
P-UOW-COUNT |
O | I4 | Anzahl der UOWs im
P-UOW-INFO-Array.
|
P-UOW-INFO (/1:*) |
X-Array mit Informationen zu jeder UOW. | ||
P-UOW-ID |
O | A32 | Kennung der UOW. |
P-UOW-STATUS |
O | A10 | Status des UOW gemäß EntireX Broker.
Der Status ist abhängig vom Stand der Verarbeitung und wird vom EntireX Broker zugewiesen. |
P-USERR-STATUS |
O | A32 | Benutzerinformationen über die UOW.
Dies ist typischerweise eine Fehlerinformation, die vom RPC-Server gesetzt wurde. |
P-CREATE-TIME |
O | A32 | Erstellungszeitpunkt der UOW laut EntireX Broker. |
P-RC |
O | N04 | Rückgabecode |
P-MESSAGE |
O | A80 | Nachrichtentext |
Geben Sie im aufrufenden Programm auf der Client-Seite das folgende Statement an:
CALLNAT 'USR6306N' P-UOW-ID-IN P-USER-ID P-BROKER-ID P-UOW-COUNT P-OUW-INFO(*) P-RC P-MESSAGE