X/Open 分散トランザクションモデルに従って、分散トランザクションのサポートは、1 つ以上のリソースマネージャーで実行される操作の追跡と管理を行う分散トランザクションマネージャーに依存します。Message Queue 4.2 では、Message Queue C-API で XA インタフェース (分散トランザクションマネージャーと、XA 準拠のリソースマネージャーとしての Message Queue の間のインタフェース) がサポートされるようになりました。それにより、BEA Tuxedo などの分散トランザクション処理環境で実行される Message Queue C-API クライアントが、分散トランザクションに参加できるようになりました。
この分散トランザクションのサポートは、次に示す、XA インタフェース仕様を実装するための新しい C-API 関数 (および新しいパラメータとエラーコード) から成ります。
MQGetXAConnection() MQCreateXASession()
C クライアントアプリケーションを分散トランザクションのコンテキストで使用する場合は、MQGetXAConnection() を使用して接続を取得し、MQCreateXASession() を使用して、メッセージを生成および消費するためのセッションを作成します。 すべての分散トランザクションの開始、コミット、およびロールバックは、分散トランザクションマネージャーが提供する API によって管理されます。
X/Open XA インタフェース仕様では、Message Queue の XA 準拠リソースマネージャーに関する次の public 情報が必要です。
xa_switch_t 構造体の名前: sun_my_xa_switch
リソースマネージャーの名前: SUN_RM
リンクする MQ C-API ライブラリ: mqcrt
xa_close 文字列と形式: なし
xa_open 文字列と形式: 「;」で区切られた名前と値のペア (「名前=値」形式)
次の名前と値の組み合わせがサポートされます。
表 1–6 Message Queue リソースマネージャーの名前と値の組み合わせ
名前 |
値 |
説明 |
デフォルト |
---|---|---|---|
address |
host:port |
ブローカのPortmapper サービスのホストとポート |
localhost:7676 |
username |
文字列 |
ブローカへの接続に使用するユーザー名 |
guest |
password |
文字列 |
ユーザー名のパスワード |
guest |
conntype |
TCP または SSL |
ブローカへの接続のプロトコルの種類 |
TCP |
trustedhost |
true/false |
ブローカのホストが信頼できるかどうか (conntype が SSL の場合にのみ使用) |
true |
certdbpath |
文字列 |
NSS 証明書およびキーデータベースファイルが格納されたディレクトリへのフルパス |
なし |
clientid |
文字列 |
JMS 永続サブスクリプションでのみ必要 |
なし |
reconnects |
整数 |
ブローカへの再接続の試行回数 (0 は再接続しないことを意味する) |
0 |
分散トランザクションを使用するアプリケーションのプログラミングでは、トランザクションマネージャー環境で動作するサーバー側のサービスと、トランザクションマネージャー API を呼び出すクライアント側のコードを作成します。Message Queue 4.2 には、Tuxedo トランザクションマネージャーに基づくプログラミング例が用意されています。それらの例は、各プラットフォームの ./C/tuxedo ディレクトリ内の sample programs ディレクトリにあります。
このディレクトリに含まれている README ファイルに、Message Queue リソースマネージャーを使用するための Tuxedo のセットアップ方法、および Tuxedo 環境で次のプログラミング例を構築する方法が記載されています。
プログラミング例 |
説明 |
---|---|
jmsserver.c |
Message Queue を使用してメッセージを送受信する Tuxedo サービスを実装します。 |
jmsclient_sender.c |
jmsserver.c プログラムのメッセージ生成サービスを使用する Tuxedo クライアントです。 |
jmsclient_receiver.c |
jmsserver.c プログラムのメッセージ受信サービスを使用する Tuxedo クライアントです。 |
async_jmsserver.c |
Message Queue を使用してメッセージを非同期に消費する Tuxedo サービスを実装します。 |
jmsclient_async_receiver.c |
async_jmsserver.c プログラムの非同期メッセージ消費サービスを使用する Tuxed クライアントです。 |