メッセージキューイングアクセス機能 TP1/Message Queue - Access 使用の手引
クライアントアプリケーションの作成,および実行時の注意事項について次に示します。
- TP1/Message Queue - Accessは2相コミットに対応しています。ただし,ローカルトランザクション機能は1相コミットです。
- XAインタフェースについて,次に示す機能は使用できません。
- トランザクションブランチとスレッドの結合の移行(マイグレーション)
- XA関数の非同期動作
また,xa_open関数はスレッド単位で発行してください。
- MQCクライアント機能は,トランザクションの決着をMQCサーバ機能に依頼します。そのため,回線障害やサーバダウンが原因でトランザクションの決着時にMQCサーバ機能と連絡が取れない場合は,TMの決着依頼に対しリトライを要求します。
したがって,トランザクション中にMQCサーバ機能を停止した場合は,MQCクライアント機能はMQCサーバ機能が再起動するまで,TMの決着依頼に対し繰り返しリトライを要求します。
- TP1/Message Queue - Access は,次の命令のエラー時に理由コードとしてMQRC_CONNECTION_BROKEN(コネクション切断)を返す場合があります。この理由コードを受け取った場合は,MQIに指定したコネクションハンドルが無効になります。MQCONN命令の発行によってコネクションを再度設定してください。
- MQDISC,MQOPEN,MQCLOSE,MQGET,MQPUT,MQPUT1,MQSET,MQINQ,MQCMIT,またはMQBACK
- TP1/Message Queue - Accessを使用するUAPで,MQGMO構造体のOptionsパラメタにMQGMO_WAITを指定した場合は,MQGET命令が完了するまで,UAPを正常に停止させることはできません。
- UAPをJavaで作成する場合,Javaがプロセスメモリを解放します。このため,メモリ不足(理由コード:SIGSEGV)でJavaが異常終了する場合があります。Java起動時に,-mxXXm(XX:サイズ)を指定して最大ヒープサイズを調整してください。
- TP1/Message Queue - AccessをXA接続して使用する場合,トランザクション発生(トランザクションマネージャが提供する関数発行)後のトランザクション内指定のMQPUT命令,MQPUT1命令,またはMQGET命令を発行したときに,サーバでトランザクションが発生します。
その後,トランザクションが決着するまでの間,トランザクションを発生させたクライアントのスレッドで発行されたMQCONN命令は,理由コードとしてMQRC_ALREADY_CONNECTED(アプリケーションはすでに接続されています)を返し,そのトランザクションで使用しているコネクションハンドルを返します。
- TP1/Message Queue - Accessは,MQDISC命令発行時にMQCゲートウェイサーバで後処理をするため,直後に発行されたMQCONN命令がMQRC_Q_MGR_NOT_AVAILABLE(キューマネジャが接続不能)でエラーリターンする場合があります。
MQDISC命令,またはMQCONN命令を繰り返し発行するUAPを使用した場合は,同時MQCONN数とMQCゲートウェイサーバ数が同じであるときにも,MQCONN命令のリトライ発行処理をしてください。
- TP1/Message Queue - Accessを使用するUAPでは,MQCONN命令発行時に回線障害(ソケット関数異常終了)が発生した場合に,理由コードとしてMQRC_UNEXPECTED_ERROR(予期しないエラーが発生)を返します。また,MQCゲートウェイサーバが不足した場合には,理由コードとしてMQRC_Q_MGR_NOT_AVAILABLE(キューマネジャが接続不能)を返します。どちらの場合もUAPでMQCONN命令のリトライ発行処理をしてください。
- サーバ側に対するトランザクション制御依頼の送受信中にクライアントアプリケーションがダウンした場合,サーバ側のトランザクション状態とクライアント側のトランザクション状態が不一致となることがあります。この場合,サーバ側で次の対処をすることでトランザクションをロールバックできます。
- OpenTP1のトランザクション状態表示コマンド(trnls -t)を実行し,不一致となったトランザクションを発生させたサーバ名(MQCGWPサーバ名)を確認します。
- 確認したMQCGWPサーバをdcsvstopコマンドで正常停止します。
- 1.で確認したMQCGWPサーバに対してmqccontrnコマンドに-fオプションを指定して実行します。
- XA連携を行う場合,コネクションハンドルとトランザクションは1対1の関係で使用してください。一つのコネクションハンドルを複数のトランザクションで同時に使用できません。また,トランザクション内で複数のコネクションハンドルを使用できません。
- JMSインタフェースのAPIトレース取得情報について
JMSインタフェースのAPIトレースは,MQIレベルの情報が取得されます。JMSインタフェースでは,デプロイ以降で発行されたすべてのMQI情報が取得されます。
All Rights Reserved. Copyright (C) 2006, 2007, Hitachi, Ltd.
(C) Copyright International Business Machines Corporation 1994, 1999. All rights reserved.