Zugriff auf WebSphere MQ-Nachrichtenwarteschlangen
EGL unterstützt den Zugriff auf WebSphere MQ-Nachrichtenwarteschlangen (ehemals MQSeries-Nachrichtenwarteschlangen) auf allen Zielplattformen.
- Verwenden Sie WebSphere MQ-bezogene EGL-Schlüsselwörter wie beispielsweise 'add' und 'get next' für einen Datensatz mit dem Stereotyp 'MQRecord'. In diesem Fall verdeckt EGL die Details von WebSphere MQ, sodass Sie sich auf das Geschäftsproblem konzentrieren können, das Ihr Code behandeln soll.
- Rufen Sie EGL-Funktionen auf, die wiederum WebSphere MQ-Befehle direkt aufrufen. In diesem Fall gibt es eine Reihe von Befehlen, die nicht von den EGL-Schlüsselwörtern unterstützt werden.
Sie können die beiden Methoden innerhalb eines Programms kombinieren. Es hat sich jedoch bewährt, sich für eine Methode zu entscheiden und diese dann durchgängig zu verwenden.
Unabhängig von Ihrer Methode können Sie zahlreiche Laufzeitbedingungen mittels Optionsdatensätzen steuern, bei denen es sich um Variablen handelt, die auf speziellen globalen Basisdatensatzabschnitten (BasicRecord) basieren. EGL übergibt diese Variablen in Aufrufen an WebSphere MQ. EGL stellt eine Reihe von Beispieldatensatzabschnitten bereit, die Sie als Grundlage für Optionsdatensätze verwenden können.
- Wenn Sie mit den EGL-Anweisungen 'add' und 'get next' arbeiten, geben Sie Optionsdatensätze in den Eigenschaften des MQRecord-Abschnitts an, die der Anweisung zugeordnet sind (siehe MQRecord-Eigenschaften). Sollten Sie keinen bestimmten Optionsdatensatz angeben, verwendet EGL einen Standarddatensatz.
- Wenn Sie die EGL-Funktionen aufrufen, die WebSphere MQ direkt aufrufen, verwenden Sie Optionsdatensätze als Argumente beim Aufrufen der Funktionen. In diesem Fall sind keine Standardwerte verfügbar.
- An Introduction to Messaging and Queueing (IBM Form GC33-0805–01)
- MQSeries MQI Technical Reference (IBM Form SC33-0850)
- MQSeries Application Programming Guide (IBM Form SC33-0807-10)
- MQSeries Application Programming Reference (IBM Form SC33-1673-06)
Verbindungen
- Eine EGL-Anweisung 'add' oder 'get next', die auf eine Nachrichtenwarteschlange zugreift.
- Einen Aufruf der EGL-Funktion MQCONN oder MQCONNX.
Sie können immer nur auf einen Warteschlangenmanager für Verbindung zur Zeit zugreifen, haben jedoch die Möglichkeit, auf mehrere von diesem Manager gesteuerte Warteschlangen zuzugreifen. Wenn Sie direkt eine Verbindung zu einem anderen Warteschlangenmanager als dem aktuellen Warteschlangenmanager für Verbindung herstellen wollen, müssen Sie die Verbindung zum ersten Warteschlangenmanager durch Aufruf von MQDISC trennen und anschließend eine Verbindung zum zweiten Warteschlangenmanager herstellen, indem Sie 'add', 'get next', MQCONN oder MQCONNX aufrufen.
Sie können auch auf Warteschlangen zugreifen, die von einem fernen Warteschlangenmanager gesteuert werden. Dies ist ein Warteschlangenmanager, mit dem der Warteschlangenmanager für Verbindung interagieren kann. Der Zugriff zwischen den beiden Warteschlangenmanagern ist nur dann möglich, wenn WebSphere MQ selbst so konfiguriert ist, dass ein solcher Zugriff zulässig ist.
Der Zugriff auf den Warteschlangenmanager für Verbindung wird beendet, wenn Sie MQDISC aufrufen oder Ihr Code endet.
Nachricht in Transaktion einschließen
- Eine EGL-Anweisung 'get next' (oder der Aufruf der EGL-Funktion MQGET) entfernt eine Nachricht nur dann, wenn eine Commitoperation ausgeführt wird.
- Die Nachricht, die von einer EGL-Anweisung 'add' (oder von einem Aufruf der EGL-Funktion MQPUT) in eine Warteschlange gestellt wird, ist nur dann außerhalb der Arbeitseinheit sichtbar, nachdem eine Commitoperation ausgeführt wurde.
Enthält die Arbeitseinheit keine Anweisungen für Warteschlangenzugriff, wird jede Änderung an einer Nachrichtenwarteschlange unverzüglich festgeschrieben.
- Für MQGET: MQGMO_SYNCPOINT
- Für MQPUT: MQPMO_SYNCPOINT
- Für MQGET: MQGMO_NO_SYNCPOINT
- Für MQPUT: MQPMO_NO_SYNCPOINT
Wenn Ihr Code eine Arbeitseinheit beendet, werden alle wiederherstellbaren Ressourcen, auf die Ihr Programm zugreift (einschließlich Datenbanken, Nachrichtenwarteschlangen und wiederherstellbare Dateien) von EGL festgeschrieben (Commit) oder rückgängig gemacht (Rollback). Hierzu kommt es unabhängig davon, ob Sie die Systemfunktionen ('sysLib.commit', 'sysLib.rollback') oder die EGL-Aufrufe an WebSphere MQ (MQCMIT, MQBACK) verwenden; die entsprechende EGL-Systemfunktion wird in beiden Fällen aufgerufen.
Ein Rollback wird ausgeführt, wenn ein EGL-Programm aufgrund eines Fehlers in einem frühen Stadium beendet wird.
Anpassung
Sie können Ihre Interaktion mit WebSphere MQ anpassen, anstatt die Standardverarbeitung der Anweisungen 'add' und 'get next' zu verwenden.
- records.egl
- Diese Datei enthält Basisdatensatzabschnitte (BasicRecord), die als Quelle für Optionsdatensätze dienen. Darüber hinaus enthält die Datei Strukturabschnitte, die von diesen Datensätzen verwendet werden und die Sie bei der Entwicklung angepasster Optionsdatensätze unterstützen.
- functions.egl
- Diese Datei enthält zwei Gruppen von Funktionen:
- WebSphere MQ-Befehlsfunktionen, die direkt auf WebSphere MQ zugreifen.
- Initialisierungsfunktionen, mit denen Sie Anfangswerte in die von Ihrem Programm verwendeten Optionsdatensätze stellen können.
- mqrcode.egl, mqrc.egl, mqvalue.egl
- Diese Dateien enthalten eine Gruppe von EGL-DataTable-Abschnitten, die von den Befehls- und Initialisierungsfunktionen verwendet werden.
Sie müssen die folgenden Tasks ausführen:
- Importieren Sie die Dateien aus dem folgenden Verzeichnis in ein EGL-Projekt:
gemeinsam_genutztes_Installationsverzeichnis\plugins\ com.ibm.etools.egl.resources_Version\MqReusableParts- gemeinsam_genutztes_Installationsverzeichnis
- Das gemeinsam genutzte Produktinstallationsverzeichnis wie beispielsweise 'C:\Programme\IBM\SDP70Shared'. Wenn Sie vor der Installation des momentan verwendeten Produkts ein Rational Developer-Produkt installiert und beibehalten haben, müssen Sie unter Umständen das Verzeichnis aus der früheren Installation angeben.
- Version
- Die neuste Version des Plug-ins, beispielsweise '7.0.100.RFB_20080711_1614'.
- Sie können die Verfügbarkeit der Abschnitte für Ihr Programm verbessern, indem Sie in die Datei, die Ihr Programm enthält,
mindestens eine EGL-Importanweisung schreiben.
Befinden sich die zu importierenden Dateien nicht in dem Projekt, für das Sie Code entwickeln, sondern in einem anderen Projekt,
müssen Sie sicherstellen, dass Ihr Projekt auf das andere Projekt verweist.
Details hierzu finden Sie unter Anweisungen 'import' und 'use'.
- Deklarieren Sie in Ihrem Programm wie folgt globale Variablen:
- Schließen Sie use-Deklarationen für die Datentabellen in 'mqrc', 'mqrcode' und 'mqvalue' ein.
- Deklarieren Sie für jeden Optionsdatensatz, den Sie an WebSphere MQ übergeben wollen, einen Basisdatensatz, der einen Optionsdatensatzabschnitt als 'typedef' verwendet. Details zu den einzelnen Abschnitten finden Sie unter Optionsdatensätze für 'MQRecords'.
- Initialisieren Sie in Ihrer Funktion die Optionsdatensätze, die an WebSphere MQ übergeben werden sollen, indem Sie die importierte EGL-Initialisierungsfunktion für jeden Datensatz aufrufen. Jede Funktion hat den Namen eines Datensatzabschnitts, gefolgt von '_INIT'. Beispiel: MQGMO_INIT.
- Legen Sie Werte für die Felder in den Optionsdatensätzen fest. Die Datentabelle in 'mqvalue' enthält eine einzelne Zeile mit Feldern. Jedes Feld
entspricht einem Symbol, das in der WebSphere MQ-Dokumentation beschrieben ist. Sie können einen Wert für ein Feld in
einem Optionsdatensatz festlegen, indem Sie eines der Felder in der Datentabelle von 'mqvalue' verwenden, wie in folgendem Beispiel:
mqgmo.options = mqvalue.mqgmo_lock[1];Sie können für ein numerisches Feld in einem Optionsdatensatz eine Kombination aus Werten festlegen, indem Sie die Werte wie in folgendem Beispiel hinzufügen:mqgmo.options = mqvalue.mqgmo_lock[1] + mqvalue.mqgmo_accept_truncated_msg[1] + mqvalue.mqgmo_browse_first[1]; - Die Vorgaben, wann Tabellen generiert werden müssen, hängen davon ab, ob es sich bei der Sprache Ihres Zielprogramms um COBOL oder Java™ handelt. Um alle Datentabellen zu generieren, die in Ihrem Programm verwendet werden, müssen Sie zulassen, dass die Builddeskriptoroption 'genTables' standardmäßig den Wert YES annimmt. Weitere Informationen finden Sie unter DataTable-Abschnitt.
Nur für COBOL unterstützte Funktionen
- Auslösefunktion (Triggering)
- Verteilerlisten