TuxMsgQLD SRVGRP="identifier" SRVID="number"
[CLOPT="[-A] [servopts options]
[-g grp_id][ -l //hostname:port][ -f config_filename]"]
従来のOMQリンク・ドライバから移植されたOTMQのTuxMsgQLD(リンク・ドライバ・サーバー)は、OTMQアプリケーションとOMQアプリケーション間のメッセージ・レベルの互換性を実現します。
OTMQリンク・ドライバ・サーバーにより、従来のOMQリンク・ドライバと同様のルーティング機能も提供されますが、いくつかの制限があります。
リンク・ドライバ・サーバーを構成するには、新規の構成ファイルを作成します。この構成ファイルは、APPDIRの下に置きます。構成ファイルは、従来のOMQの構成ファイルの%XGROUPおよび%ROUTEセクションから移植されています。
変換ツールを使用してオリジナルのOMQグループから移行されたOTMQのグループの場合、この構成ファイルは、コマンドラインで指定したパラメータに従って変換ツールによって作成されます。将来のXGROUP構成への更新のため、構成ファイルは手動で更新してください。
リスト3-1に、リンク・ドライバ・サーバーの構成ファイルの例を示します。
# Define cross-group connections with remote OMQ,
# only the remove OMQ group info should be list here
%XGROUP
# Group Group Node/ Init- Thresh Buffer Recon- Window Trans- End-
# Name Number Host iate old Pool nect Delay Size (Kb) port point
GRP_11 11 host1.abc.com Y - - 30 10 250 TCPIP 10001
GRP_12 12 host2.abc.com Y - - 30 10 250 TCPIP 10002
%EOS
%ROUTE
#----------------------------------
# Target Route-through
# Group Group
#----------------------------------
2 11
3 12
%EOS
%END
TuxMsgQ
SRVGRP="identifier"
SRVID="number" CLOPT=" [-A][servopts options] -- [-t timeout][-i sanity scan interval]"
メッセージ・キュー・マネージャは、tpenqueue()およびtpdequeue()を呼び出してプログラムのかわりにメッセージのエンキューとデキューを行うOracle Tuxedoシステム付属のサーバーです。アプリケーション管理者は、SERVERSセクションでこのサーバーをアプリケーション・サーバーとして指定することにより、アプリケーションでキューに対するメッセージの登録および取出しを行うことができます。
位置指定、サーバー・グループ、サーバー識別子、その他の汎用サーバー関連パラメータは、サーバー用に定義されている構成ファイル機構を使用して、このサーバーに関連付けられます。次に、カスタマイズに使用できる追加コマンドライン・オプションを示します。
Qspaceのデフォルトのアタッチ・タイムアウトを構成するには、TuxMQATH[qspace]という名前のサービスのSERVICESセクションのBLOCKTIMEプロパティを設定します([qspace]は、TuxMsgQサーバーからTuxMsgQルーチンで通知されるサービス名)。
-t timeout
-i sanity scan interval
tpenqueue()およびtpdequeue()関数は、第1引数としてキュー・スペースの名前を受け取ります。この名前は、TuxMsgQによって通知されたサービスの名前でなければなりません。デフォルトでは、TuxMsgQはサービス「TuxMsgQ」のみを提供します。キュー・スペースを1つだけ使用するアプリケーションの場合はこれで十分ですが、複数のキュー・スペースを持つアプリケーションでは、異なるキュー・スペース名を必要とすることがあります。また、アプリケーションによっては、キュー・スペースと同じ名前のより説明的なサービス名の指定が必要になる場合もあります。追加サービス名の公開は、使用例にもあるように、標準のサーバー・コマンドライン・オプション-sを使用して行うことができます。また、この後の項で説明するように、カスタムTuxMsgQプログラムを生成するときにサービスをハードコードしてこれを行うこともできます。
これらの方法(サーバー・コマンドライン・オプション、またはカスタマイズされたサーバー)は、キュー・スペースにメッセージの静的ルーティングを行う場合に使用できますが、データ依存型ルーティングを使用して動的なルーティングを行うこともできます。この場合、各TUXMSGQserverは同じサービス名を通知しますが、構成ファイルのROUTINGフィールドが使用されて、待機メッセージ内のアプリケーション・データに基づくルーティング基準が指定されます。ルーティング関数は、サービス名とアプリケーションの型付きバッファ・データに基づいてGROUPを返し、このGROUPを使用して指定のグループにあるサービスにメッセージが転送されます(なお、キュー・スペースは、OPENINFO文字列に基づいてGROUPにつき1つしか存在できません)。
TuxMsgQは、Oracle Tuxedoシステムに用意されている標準のバッファ・タイプを処理します。これ以外のアプリケーション・バッファ・タイプが必要な場合は、buildserver(1)を使用して、TuxMsgQのカスタマイズ・バージョンをビルドする必要があります。詳細は、『Oracle Tuxedo ATMI /Qコンポーネントの使用』を参照してください。
buildserverの項で説明されるカスタマイズは、サーバー用にサービス名をハードコードする場合にも使用できます。
コール元に組み込むファイルは、アプリケーション・バッファ・タイプ・スイッチおよびサポートされる必須のルーチンのみをインクルードします。buildserverは、サーバー・オブジェクト・ファイルの$TUXDIR/lib/TuxMsgQ.oとアプリケーション・タイプ・スイッチのファイル(複数可)を結合し、必要なOracle Tuxedoシステム・ライブラリとリンクするために使用します。次の例を使用して、詳細を説明します。
buildserver -v -o TuxMsgQ -s qspacename:TuxMsgQ -r TUXEDO/QM \
-f ${TUXDIR}/lib/TuxMsgQ.o -f apptypsw.o
-v
-o name
-s qspacename,qspacename :TuxMsgQ
-r TUXEDO/QM
-f $TUXDIR/lib/TuxMsgQ.o
-f firstfiles
この例では、2つのキュー・スペースを使用できます。どちらのTuxMsgQサーバーも同じサービスを提供し、ルーティングはアプリケーションの型付きバッファのACCOUNTフィールドを介して行われます。
*GROUPS
# For Windows, :myqueue becomes ;myqueue
TUXMSGQGRP1 GRPNO=1 TMSNAME=TMS_TMQM
OPENINFO="TUXEDO/TMQM:/dev/device1:myqueue"
# For Windows, :myqueue becomes ;myqueue
TUXMSGQGRP2 GRPNO=2 TMSNAME=TMS_TMQM
OPENINFO="TUXEDO/TMQM:/dev/device2:myqueue"
*SERVERS
# The queue space name, myqueue, is aliased as ACCOUNTING in this example
TuxMsgQ SRVGRP="TUXMSGQGRP1" SRVID=1000 RESTART=Y GRACE=0
CLOPT="-s ACCOUNTING:TuxMsgQ"
TuxMsgQ SRVGRP="TUXMSGQGRP2" SRVID=1000 RESTART=Y GRACE=0
CLOPT="-s ACCOUNTING:TuxMsgQ"
TMQFORWARD SRVGRP="TUXMSGQGRP1" SRVID=1001 RESTART=Y GRACE=0 REPLYQ=N
CLOPT=" -- -qservice1"
TMQFORWARD SRVGRP="TUXMSGQGRP2" SRVID=1001 RESTART=Y GRACE=0 REPLYQ=N
CLOPT=" -- -qservice1"
*SERVICES
ACCOUNTING ROUTING="MYROUTING"
*ROUTING
MYROUTING FIELD=ACCOUNT BUFTYPE="FML"
RANGES="MIN - 60000:TUXMSGQGRP1,60001-MAX:TUXMSGQGRP2"
buildserver(1)、tpdequeue(3c)、tpenqueue(3c)、servopts(5)、TMQFORWARD(5)、UBBCONFIG(5)
『C言語を使用したOracle Tuxedo ATMIアプリケーションのプログラミング』
TuxMQFWD - メッセージ・キュー・オフライン・トレード・ドライバ
TuxMQFWD
SRVGRP="identifier"
SRVID="number" CLOPT=" [-A][servopts options] -- [-f delay time][-t timeout][-i idle time]"
メッセージ・キュー・オフライン・トレード・ドライバは、Oracle Tuxedoシステムが提供するサーバーです。
位置指定、サーバー・グループ、サーバー識別子、その他の汎用サーバー関連パラメータは、サーバー用に定義されている構成ファイル機構を使用して、このサーバーに関連付けられます。次のオプションを指定できます。
-f delay time
-i idletime
-t timeout
構成によっては、TuxMQFWDがキューからメッセージを取り出せないか、メッセージを転送できないことがあり、その場合はサーバーを起動できなくなります。こうした条件では、次のことが必要です。
1つのグループ内に複数のTuxMQFWDプロセスは構成できません。
TuxMQFWD
SRVGRP=QGRP1 SRVID=51 GRACE=0 RESTART=Y CONV=N MAXGEN=10
CLOPT="-- -i 1"
buildserver(1)、tpdequeue(3c)、tpenqueue(3c)、servopts(5)、TMQFORWARD(5)、UBBCONFIG(5)
TMQ_NA
SRVGRP="identifier"
SRVID="number" CLOPT=" [-A][servopts options] -- [-g OTMQ group] [-r OMQ group]"
TMQ_NAはOTMQのシステム・サーバーです。これにより、ネーミングおよびキュー名とキュー名の実行時バインディングが提供されます。次のオプションがサポートされます。
-g OTMQ_group_xxx
-r OMQ_group_yyy
注意: | パラメータの順序により、どのネーミング・サーバーがプライマリで、どれがバックアップかが決定します。 |
TMQ_NA
SRVGRP=QGRP1 SRVID=51 GRACE=0 RESTART=Y CONV=N MAXGEN=10
CLOPT=" -- -g 1 "
buildserver(1)、tpdequeue(3c)、tpenqueue(3c)、servopts(5)、TMQFORWARD(5)、UBBCONFIG(5)
『C言語を使用したOracle Tuxedo ATMIアプリケーションのプログラミング』
TMS_TMQM - OTMQリソース・マネージャのTMSサーバーです。
OTMQでは、独立したTuxedoトランザクション管理サーバー(TMS)も提供されます。TMS_TMQMは、TuxMsgQまたはTuxMQFWD(あるいはその両方)のグループ内に構成する必要があります。
*GROUPS
QGRP1
LMID=L1 GRPNO=1 TMSNAME=TMS_TMQM TMSCOUNT=2
OPENINFO="TUXEDO/TMQM:/dev/device2:myqueue"
buildserver(1)、tpdequeue(3c)、tpenqueue(3c)、servopts(5)、TMQFORWARD(5)、UBBCONFIG(5)
『C言語を使用したOracle Tuxedo ATMIアプリケーションのプログラミング』
TMQ_EVT SRVGRP="identifier" SRVID="number"
[CLOPT="[-A] [servopts options]
[-- [-S] [-p poll-seconds] [-f control-file]]"]
TMQ_EVTはOracle Tuxedoシステムが提供するサーバーで、tpqpublishからのイベント・レポート・メッセージ・バッファを処理し、それらにフィルタを適用して転送するEventBrokerとして動作します。
フィルタや通知に関するルールは、制御ファイルcontrol-fileに格納され、デフォルトの名前は${APPDIR}/tmusrevt.datです。control-fileの構文はEVENT_MIB(5)で定義され、特に、EVENT_MIBのクラス属性を設定することで、通知ルールの範囲内でサブスクリプションをアクティブ化できます。
1つまたは複数の二次的なTMQ_EVTプロセスを起動して、可用性を高めることができます。追加サーバーは、「セカンダリ・サーバー」であることを示すコマンドライン・オプション-Sを指定して起動する必要があります。
EVENT_MIB(5)の構成が更新されるときには、プライマリTMQ_EVTサーバーがその制御ファイルに書込みを行います。セカンダリ・サーバーは、プライマリ・サーバーの制御ファイルが更新されているかどうかをポーリングを通じてチェックし、必要であれば各自の(ローカルの)制御ファイルを更新します。ポーリングの間隔は-pオプションで指定できます。デフォルト値は30秒です。
注意: | 複数のリリースのOracle Tuxedoシステムで構成されたMP構成を設定し、TMQ_EVTまたはTMSYSEVTサーバー(あるいはその両方)を実行する場合は、これらのサーバーを最新のリリースのノードで実行する必要があります。 |
TMQ_EVTは、TMS_TMQMと同じグループにはデプロイできません。
TMQ_EVTは、Oracle Tuxedoリリース6.0以降のマシンで実行する必要があります。
プライマリTMQ_EVTサーバーを別のマシンに移行するには、システム管理者は、制御ファイルの最新のコピーを用意する必要があります。セカンダリTMQ_EVTサーバーは、自動的に最新のコピーを保持しています。
tppost()をトランザクション・モードで呼び出す場合は、すべてのTMQ_EVTサーバー・グループがトランザクション機能(TMSプロセス)を備えている必要があります。
TMQ_EVTサーバーの環境変数は、メッセージにフィルタを適用したりフォーマットする際に必要となるFMLフィールド表やVIEWファイルを使用できるように設定しておく必要があります。これらの環境変数は、マシンまたはサーバーの環境設定ファイルで設定できます。
*SERVERS
TMQ_EVT SRVGRP=ADMIN1 SRVID=100 RESTART=Y MAXGEN=5 GRACE=3600
CLOPT="-A --"
TMQ_EVT SRVGRP=ADMIN2 SRVID=100 RESTART=Y MAXGEN=5 GRACE=3600
CLOPT="-A -- -S -p 120"
tpqpublish、tpqsubscribe、EVENTS(5)、EVENT_MIB(5)、TMSYSEVT(5)
TMQFORWARDPLUS SRVGRP="identifier" SRVID="number" REPLYQ=N CLOPT="
[-A] [servopts options] -- -q queuename[,queuename...]
[-t trantime ] [-i idletime] [-b timeout] [-e] [-d] [-n] [-f delay] "
メッセージ転送サーバーはOracle Tuxedoシステムが提供するサーバーで、tpenqueue()で格納されたメッセージを後処理のために転送します。アプリケーション管理者は、SERVERSセクションでこのサーバーをアプリケーション・サーバーとして指定することにより、アプリケーション・サーバーのメッセージ処理を自動化できます。
位置指定、サーバー・グループ、サーバー識別子、その他の汎用サーバー関連パラメータは、サーバー用に定義されている構成ファイル機構を使用して、このサーバーに関連付けられます。次のオプションがサポートされます。
-q queuename[,queuename...]
-t trantime
-i idletime
-b timeout
-e
-d
-n
-f delay
メッセージは、それが読み取られるキューと同じ名前のサービスを提供するサーバーに送信されます。キューへのメッセージ登録時に優先度を指定した場合は、その優先度がメッセージの優先度になります。指定していない場合、優先度は構成ファイルで定義されているサービスの優先度か、またはデフォルト(50)になります。
メッセージは、1つのトランザクションの中でキューから取り出され、サーバーに送信されます。サービスが正常に終了すると、トランザクションはコミットされ、メッセージはキューから削除されます。メッセージが応答キューに関連付けられている場合は、サービスからの応答はいずれも、返されたtpurcodeとともに応答キューにエンキューされます。応答キューが存在しない場合、応答はドロップされます。
元のメッセージをキューに登録する場合、アプリケーションではメッセージに対する応答のサービス品質を指定できます。応答のサービス品質が指定されていない場合、応答キューに指定されているデフォルトの配信ポリシーが使用されます。デフォルトの配信ポリシーは、メッセージに対する応答がキューに登録されるときに決定される点に注意してください。つまり、元のメッセージがキューに登録されてからメッセージに対する応答が登録されるまでの間に、応答キューのデフォルトの配信ポリシーが変更された場合、応答が最後に登録される時点で有効なポリシーが使用されます。
サービスが異常終了した場合、そのキューに対する再試行制限によって指定されている回数の範囲内でトランザクションがロールバックされ、メッセージがキューに戻されます。メッセージがキューに戻される際、そのメッセージが最初にキューに登録されたときに適用された順位付けルールおよびキューからの取出しルールは、delay秒の間、一時的に効力を失います。これにより、たとえば、順位付けの低いメッセージが、キューに戻されたメッセージより先に取り出される可能性が出てきます。
-dオプションを指定した場合、サービスが異常終了し、サーバーから応答メッセージが受信されると、メッセージはキューから削除され、また、応答メッセージ(および関連するtpurcode)は、異常終了キューがそのメッセージに関連付けられており、かつ存在していればそのキューにエンキューされます。キューに設定されている再試行の制限に達すると同時にメッセージが削除されるようになっている場合、元のリクエスト・メッセージはエラー・キューに移されます。
構成によっては、TMQFORWARDPLUSがキューからメッセージを取り出せないか、メッセージを転送できないことがあり、その場合はサーバーを起動できなくなります。こうした条件では、次のことが必要です。
TMQFORWARDPLUSは、Oracle Tuxedoに用意されている標準のバッファ・タイプを処理します。これ以外のアプリケーション・バッファ・タイプが必要な場合は、buildserver(1)をカスタマイズ・タイプ・スイッチとともに使用して、TMQFORWARDPLUSのカスタマイズ・バージョンをビルドする必要があります。詳細は、『Oracle Tuxedo ATMI /Qコンポーネントの使用』を参照してください。
コール元に組み込むファイルは、アプリケーション・バッファ・タイプ・スイッチおよびサポートされる必須のルーチンのみをインクルードしてください。buildserverは、サーバー・オブジェクト・ファイル$TUXDIR/lib/TMQFORWARDPLUS.oとアプリケーション・タイプ・スイッチのファイル(複数可)を結合し、必要なOracle Tuxedoシステム・ライブラリとリンクするために使用します。次の例を使用して、詳細を説明します。
buildserver -v -o TMQFORWARDPLUS -r TUXEDO/QM -f ${TUXDIR}/lib/TMQFORWARDPLUS.o -f apptypsw.o
-v
-o name
-r TUXEDO/TMQM
-f $TUXDIR/lib/TMQFORWARDPLUS.o
-f firstfiles
注意: | TMQFORWARDPLUSは、サポートされているすべてのサーバー・プラットフォームでOracle Tuxedoシステム提供のサーバーとしてサポートされます。 |
注意: | TMQFORWARDPLUSは、相互運用するアプリケーションで実行できますが、Oracle Tuxedoリリース4.2以降のノードで実行する必要があります。 |
*GROUPS # For Windows, :myqueue becomes ;myqueue
TMQUEUEGRP LMID=lmid GRPNO=1 TMSNAME=TMS_TMQM
OPENINFO="TUXEDO/TMQM:/dev/device:myqueue"
# no CLOSEINFO is required
*SERVERS # recommended values RESTART=Y GRACE=0
TMQFORWARDPLUS SRVGRP="TMQUEUEGRP" SRVID=1001 RESTART=Y GRACE=0
CLOPT=" -- -qservice1,service2" REPLYQ=N
TMQUEUE SRVGRP="TMQUEUEGRP" SRVID=1000 RESTART=Y GRACE=0
CLOPT="-s ACCOUNTING:TMQUEUE"
buildserver(1)、tpdequeue(3c)、tpenqueue(3c)、servopts(5)、TMQUEUE(5)、UBBCONFIG(5)