Gemäß dem verteilten Transaktionsmodell von X/Open beruht die Unterstützung für Transaktionen auf einem Manager für verteilte Transaktionen, der die von einer oder mehreren Ressourcenmanagern durchgeführten Vorgänge aufzeichnet und verwaltet. In Message Queue 4.2 unterstützt Message Queue C-API nun die XA-Schnittstelle (zwischen einem Manager für verteilte Transaktionen und Message Queue als XA-konformen Ressourcenmanager), was es Message Queue C-API-Clients, die in einer Umgebung ausgeführt werden, die verteilte Transaktionen verarbeitet (wie beispielsweise BEA Tuxedo), sich an verteilten Transaktionen zu beteiligen.
Diese Unterstützung für verteilte Transaktionen besteht aus folgenden neuen C-AP-Funktionen (und neuen Parametern und Fehlercodes), die zur Implementierung der XA-Schnittstellenspezifikation verwendet werden:
MQGetXAConnection() MQCreateXASession()
Wenn eine C-Client-Anwendung im Kontext einer verteilten Transaktion verwendet werden soll, muss sie mithilfe von MQGetXAConnection() eine Verbindung herstellen und mithilfe von MQCreateXASession() eine Sitzung für Produktion und Konsum von Nachrichten erstellen. . Starten, Übernehmen und Zurücksetzen von verteilten Transaktionen wird durch APIs verwaltet, die vom Manager für verteilte Transaktionen bereitgestellt werden.
Für de X/Open-XA-Schnittstellenspezifikation sind folgende öffentlichen Informationen in Bezug auf den XA-konformen Message Queue-Ressourcenmanager erforderlich:
Name der xa_switch_t-Struktur: sun_my_xa_switch
Name des Ressourcenmanagers: SUN_RM
Die zu verknüpfende MQ C-API-Bibliothek: mqcrt
Zeichenfolge xa_close und Format: none
Zeichenfolge xa_open und Format: durch â;â getrennte Name=Wert-Paare
Folgende Name/Wert-Paare werden unterstützt:
Tabelle 1–6 Name/Wert-Paare des Message Queue-Ressourcenmanagers
Name |
Wert |
Beschreibung |
Standard |
---|---|---|---|
Adresse |
host:port |
Der Host:Anschluss des Portmapper-Diensts des Brokers. |
localhost:7676 |
username |
string |
Der Benutzername für die Herstellung einer Verbindung zum Broker |
guest |
Passwort |
string |
Das zum Benutzernamen gehörende Passwort |
guest |
conntype |
TCPor SSL |
Der Protokolltyp für die Verbindung mit dem Broker |
TCP |
trustedhost |
true/false |
Ob der Broker-Host vertrauenswürdig ist (gilt nur bei conntype=SSL) |
true |
certdbpath |
string |
Der vollständige Pfad zu dem Verzeichnis, das das NSS-Zertifikat und die Schlüsseldatenbankdateien enthält |
nicht festgelegt |
clientid |
string |
Nur für dauerhafte JMS-Abonnements erforderlich |
nicht festgelegt |
reconnects |
Integer |
Die Anzahl der erneuten Verbindungsversuche für den Broker (0 bedeutet: keine erneute Verbindung) |
0 |
Um eine Anwendung zu programmieren, die verteilte Transaktionen verwendet, erstellen Sie einen serverseitigen Dienst, der in der Umgebung des Transaktionsmanagers ausgeführt wird, und einen clientseitigen COde, der die Transaktionsmanager-APIs aufruft. Message Queue 4.2 bietet Programmierungsbeispiele, die auf dem Tuxedo-Transaktionsmanager beruhen. Diese Beispiele befinden sich im Beispielprogrammverzeichnis auf den einzelnen Plattformen im Verzeichnis ./C/tuxedo.
Dieses Verzeichnis beinhaltet eine README-Datei, die erläutert, wie Tuxedo zur Verwendung des Message Queue-Ressourcenmanagers eingerichtet wird und wie die folgenden Beispielprogramme in der Tuxedo-Umgebung erstellt werden können:
Beispielprogramm |
Beschreibung |
---|---|
jmsserver.c |
Implementiert Tuxedo-Dienste, die Nachrichten mithilfe von Message Queue senden und empfangen. |
jmsclient_sender.c |
Tuxedo-Client, der den Nachrichtenproduktionsdienst im Programm jmsserver.c verwendet. |
jmsclient_receiver.c |
Tuxedo-Client, der den Nachrichtenempfangsdienst im Programm jmsserver.c verwendet. |
async_jmsserver.c |
Implementiert einen Tuxedu-Dienst, der asynchron Nachrichten mithilfe von Message Queue konsumiert. |
jmsclient_async_receiver.c |
Tuxedo-Client, der den asynchronen Nachrichtenempfangsdienst im Programm jmsserver.c verwendet. |