BEA Logo BEA Tuxedo Release 8.0

  BEA ホーム  |  イベント  |  ソリューション  |  パートナ  |  製品  |  サービス  |  ダウンロード  |  ディベロッパ・センタ  |  WebSUPPORT

 

   Tuxedo ホーム   |   BEA Tuxedo /Q コンポーネント   |   先頭へ   |   前へ   |   次へ   |   目次

 


コンフィギュレーション

BEA Tuxedo /Q コンポーネントには、3 つのサーバが提供されています。1 つは、TMS_QM という BEA Tuxedo /Q リソース・マネージャ用のトランザクション・マネージャ・サーバ (TMS) です。このサーバは、キュー機能でグローバル・トランザクションを管理します。このサーバは、コンフィギュレーション・ファイルの GROUPS セクションで定義されていることが必要です。

ほかの 2 つは、TMQUEUE(5) および TMQFORWARD(5) で、ユーザにサービスを提供します。この 2 つのサーバは、コンフィギュレーション・ファイルの SERVERS セクションで定義されている必要があります。

TMQFORWARD の機能がアプリケーションのニーズを完全には満たさない場合、アプリケーション独自のキュー・サーバを作成することもできます。たとえば、エラー・キューに移動したメッセージをキューから取り出す特別なサーバが必要な場合があります。

アプリケーションでは、ピア・ツー・ピア通信を選択することもできます。この通信では、転送サーバを使用せずに、アプリケーションはほかのアプリケーションと、クライアントはほかのクライアントと通信します。

QM サーバ・グループの指定

標準要件であるグループ名のタグおよび GRPNO の値 (詳細については UBBCONFIG(5) を参照) のほかに、アプリケーションが使用するキュー・スペースごとに 1 つのサーバ・グループを定義する必要があります。TMSNAME および OPENINFO パラメータを設定する必要があります。次は、この 2 つのパラメータの例です。

TMSNAME=TMS_QM

および

OPENINFO="TUXEDO/QM:<device_name:<queue_space_name>"

TMS_QM は、BEA Tuxedo /Q のトランザクション・マネージャ・サーバの名前です。OPENINFO パラメータの TUXEDO/QM は、$TUXDIR/udataobj/RM にあるリソース・マネージャのリテラル名です。<device_name> および <queue_space_name> の値は、状況に応じて決定されます。汎用デバイス・リストのパス名、およびキュー・スペースに対応付けられた名前をそれぞれ設定します。これらの値は、qmadmin(1) を使用して、BEA Tuxedo の管理者が指定します。

注記 これらの値は、時系列順に指定されている必要はありません。コンフィギュレーション・ファイルは、キュー・スペースを定義する前でも定義した後でも作成できます。コンフィギュレーションが定義され、以前に作成されたキュー・スペースとキューが使用できることが重要です。

GROUPS セクションのエントリごとに、キュー・スペースを 1 つだけ使用できます。CLOSEINFO パラメータは使用されません。

次は、TMQUEUE(5) のリファレンス・ページから引用した例です。

*GROUPS
TMQUEUEGRP1 GRPNO=1 TMSNAME=TMS_QM
OPENINFO="TUXEDO/QM:/dev/device1:myqueuespace"
TMQUEUEGRP2 GRPNO=2 TMSNAME=TMS_QM
OPENINFO="TUXEDO/QM:/dev/device2:myqueuespace"

メッセージ・キュー・サーバの指定

TMQUEUE(5) リファレンス・ページでは、コンフィギュレーション・ファイルの SERVERS セクションについて詳しく説明しています。ここでは、特に大切な内容について説明します。

操作のタイムアウト

TMQUEUE でタイムアウトが認識されるのは、CLOPT パラメータで 2 つのダッシュ (--) の後に -t timeout オプションが指定されている場合です。このタイムアウト値は、サーバでトランザクションが有効ではないことが検出された場合に、サーバ内で開始された操作に適用されます。つまり、クライアントが tpbegin(3c) を呼び出さずに tpenqueue(3c) または tpdequeue(3c) を呼び出した場合、トランザクションは有効になっていません。または、クライアントがトランザクションを開始し、TPNOTRAN フラグを設定してクライアントのトランザクションでキューに要求を登録しない場合に、tpenqueue() または tpdequeue() を呼び出したときも、トランザクションは有効になっていません。timeout のデフォルト値は 30 秒です。tpdequeue 要求の応答で flagsTPQWAIT が設定されている場合、待ち時間が -t timeout に指定された時間 (秒単位) を超えると、TPETIME エラーが返されます。

注記 ctl は、TPQCTL 型の構造体で、tpenqueue(3c) および tpdequeue(3c) で使用されて、呼び出し元プロセスとシステム間でパラメータの受け渡しが行われます。TPQWAIT は、tpdequeue のフラグ設定の 1 つで、プロセスが応答メッセージを待機することを示します。この構造体の詳細については、「TPQCTL 構造体」、および「TPQUEDEF-REC 構造体」を参照してください。COBOL でこれに相当するものは、TPQUEDEF-REC レコードです。

キュー・スペース名、キュー名、およびサービス名

キュー・スペース名、キュー名、およびサービス名は、混同しやすいので注意してください。まず、メッセージ・キュー・サーバ TMQUEUE の指定では注意が必要です。このサーバをコンフィギュレーション・ファイルで指定する場合は、CLOPT パラメータの -s フラグを使用して、サーバのあるインスタンスからサービスを受け取るキュー・スペースの名前を指定できます。これは、関数 TMQUEUE で宣言されたサービスと同じです。キュー・スペースを 1 つだけ使用するアプリケーションでは、CLOPT -s オプションを指定する必要はありません。デフォルトの -s TMQUEUE:TMQUEUE が使用されます。アプリケーションに複数のキュー・スペースが必要な場合、キュー・サーバの SERVERS セクションの -s オプションの引数として、キュー・スペースの名前を指定します。

この指定を行う別の方法としては、buildserver(1) を使用してメッセージ・キュー・サーバを再度ビルドし、同じように -s オプションを使用してキュー・スペースの名前を指定することができます。この方法では、実行可能サーバにサービス名が固定、つまり「ハード・コーディング」されます。

# 次の 2 つの指定は同じです。

*SERVERS
TMQUEUE SRVGRP="TMQUEUEGRP1" SRVID=1000 RESTART=Y GRACE=0 \
CLOPT="-s myqueuespace:TMQUEUE"
and

buildserver -o TMQUEUE -s myqueuespace:TMQUEUE -r TUXEDO/QM \
-f ${TUXDIR}/lib/TMQUEUE.o
followed by
..
..
..
TMQUEUE SRVGRP="TMQUEUEGRP1" SRVID=1000 RESTART=Y GRACE=0 \
CLOPT="-A"

データ依存型ルーティング

前の節で、メッセージ・キュー・サーバ内のサービス (キュー・スペース名) の指定について説明しました。この機能を使用すると、キューのデータ依存型ルーティングを行うことができます。データ依存型ルーティングでは、メッセージがキューに登録されて、メッセージ・バッファのフィールド値に応じて特定のグループ内のサービスによって処理されます。その場合、同じキュー・スペース名を 2 つの異なるグループに指定します。そして、ルーティングをコンフィギュレーション・ファイルで設定して、キューにあるメッセージの処理を行うグループを指定します。次は、TMQUEUE(5) のリファレンス・ページから引用した例です。キュー・スペース名は変えてあります。

*GROUPS
TMQUEUEGRP1 GRPNO=1 TMSNAME=TMS_QM
OPENINFO="TUXEDO/QM:/dev/device1:myqueuespace"
TMQUEUEGRP2 GRPNO=2 TMSNAME=TMS_QM
OPENINFO="TUXEDO/QM:/dev/device2:myqueuespace"
*SERVERS
TMQUEUE SRVGRP="TMQUEUEGRP1" SRVID=1000 RESTART=Y GRACE=0 \
CLOPT="-s ACCOUNTING:TMQUEUE"
TMQUEUE SRVGRP="TMQUEUEGRP2" SRVID=1000 RESTART=Y GRACE=0 \
CLOPT="-s ACCOUNTING:TMQUEUE"
*SERVICES
ACCOUNTING ROUTING="MYROUTING"
*ROUTING
MYROUTING FIELD=ACCOUNT BUFTYPE="FML" \
RANGES="MIN-60000:TMQUEUEGRP1,60001-MAX:TMQUEUEGRP2"

バッファ・タイプのカスタマイズ

TMQUEUE では、ATMI のすべての標準バッファ・タイプがサポートされています。アプリケーションでほかのバッファ・タイプを追加する必要がある場合は、$TUXDIR/tuxedo/tuxlib/types/tmsypesw.c をコピーし、独自のバッファ・タイプのエントリを追加し、最終行の NULL が残っていることを確認し、変更したファイルを buildserver(1) コマンドへの入力として使用します。buildserver コマンドの使用例については、TMQUEUE(5) のリファレンス・ページを参照してください。

追加したサーバ名は、CLOPT パラメータ (前述を参照) に指定せずに、buildserver コマンドの -s オプションを使用して TMQUEUE に対応付けることができます。

バッファ・サブタイプ

バッファのサブタイプは tpalloc(3c) サブタイプ・パラメータを使用して割り当てることができ、tptypes(3c) 関数を使用して後でそれを取得できます。この機能により、ユーザ定義の ATMI バッファ・タイプを新しく作成せずに、データに型を割り当てることができます。これは、文字配列 (CARRAY) または文字列 (STRING) を含むバッファで特に有用です。

メッセージ転送サーバの指定

TMQFORWARD(5) は、BEA Tuxedo /Q で提供される 3 番目のサーバです。このサーバは、指定されたキューからメッセージを取り出し、tpcall(3c) を介してそのメッセージを BEA Tuxedo サーバに渡し、対応する応答メッセージを処理します。コンフィギュレーション・ファイルでサーバを定義する方法については、TMQFORWARD(5) のリファレンス・ページを参照してください。ここでは、特に大切な内容について説明します。

TMQFORWARD は 1 つのサーバであり、アプリケーションで使用される各インスタンスは、コンフィギュレーション・ファイルの SERVERS セクションで定義されていなければなりません。ただし、TMQFORWARD には、通常のサーバとは異なる次のような特徴があります。

TMQFORWARD のインスタンスは、キューに対応するサーバ・グループを使用して、そのキュー・スペースに結び付けられます。特に、そのグループの OPENINFO 文の第 3 フィールドを使用して、キュー・スペースと結び付けられます。以下に、これ以外の主なパラメータ、特に 2 つのダッシュに続く CLOPT パラメータについて説明します。

キュー名およびサービス名 ( -q オプション)

-q queuename,queuename... は必須パラメータです。このパラメータは、サーバのこのインスタンスが確認する 1 つ以上のキューを指定します。queuename は、最大 15 文字までの NULL で終了する文字列です。これは TMQFORWARD によって一度キューから取り出された待機メッセージを処理するアプリケーション・サービス名と同じです。また、この名前は、メッセージ・キュー・サーバ TMQUEUE を呼び出す準備をするときに、プログラマが tpenqueue(3c) または tpdequeue(3c) の 2 番目の引数として指定する名前でもあります。

トランザクション・タイムアウトの指定 (-t オプション)

TMQFORWARD は、TMQFORWARD が開始して終了するトランザクション内で機能します。-t trantime オプションは、トランザクションがタイムアウトになるまでの時間 (秒単位) を指定します。TMQFORWARD がキュー上にメッセージがあることを確認すると、トランザクションが開始されます。応答が応答キューまたは異常終了キューのいずれかに登録されると、そのトランザクションがコミットされます。そのため、トランザクションには、メッセージを処理するサービスの呼び出しと応答の受信が含まれています。デフォルト値は 60 秒です。

アイドル時間の指定 (-i オプション)

TMQFORWARD は一度呼び出されると、割り当てられているキューを定期的に確認します。キューが空であった場合は、-i idletime 秒間停止してから再度確認を行います。値が指定されていない場合 デフォルト値の 30 秒が使用されます。この値を 0 に設定すると、キューが継続的に確認されます。これは、キューが空の場合が多いときは、CPU リソースを浪費することになります。

サーバ終了の指定 (-e オプション)

-e オプションが指定されていると、キューが空の場合にサーバが正常にシャットダウンし、ユーザ・ログ・メッセージが生成されます。この機能は、キューに指定するしきい値コマンドに対して使用します。-e オプションとしきい値コマンドの詳細については、「キュー・スペースとキューの作成」を参照してください。

サービスの異常終了後のメッセージの削除 (-d オプション)

サービス要求が TMQFORWARD から呼び出された後で異常終了した場合、トランザクションはロールバックされ、後で再試行できるようにメッセージは (キューに指定された再試行の制限回数まで) キューに戻されます。-d オプションを使用すると、次の処理も行われます。つまり、異常終了したサービスで NULL 以外の応答が返された場合、異常終了キューがメッセージに対応付けられ、キューが存在するときは、応答 (および、それに対応付けられた tpurcode) が異常終了キューに登録されて元の要求メッセージは削除されます。また、-d オプションを使用すると、キューに設定されてた再試行回数の制限値に達すると同時に元の要求メッセージが削除され、元の要求メッセージはエラー・キューに登録されます。

このオプションで重要なことは、ただむやみに再試行するのではなく、発信元のライアントが異常終了メッセージを調べ、再試行が必要であるかどうかを判断するようにコーディングできることです。これにより、本質的な問題、たとえば、アカウントが存在していないめに、レコードが「見つからない」場合などが原因で失敗した場合に、それを処理する方法が提供されます。

バッファ・タイプのカスタマイズ

カスタマイズしたアプリケーション・バッファ・タイプをタイプ・スイッチに追加し、buildserver(1) コマンドを使用して TMQFORWARD に組み込むことができます。ただし、TMQFORWARD をカスタマイズした場合は、-s オプションでサービス名を指定することはできません。

動的なコンフィギュレーション

コンフィギュレーション・パラメータについて、UBBCONFIG パラメータの観点から説明してきました。ただし、GROUPS セクションおよび SERVERS セクション内の指定は、tmconfig(1) を使用して、実行中のアプリケーションの TUXCONFIG ファイルに追加することもできます。tmconfig、wtmconfig(1) を参照してください。グループおよびサーバは、一度定義したら再起動する必要があります。

 

先頭へ戻る 前のトピックへ 次のトピックへ