グローバル作業単位の有効期限切れ
キュー・マネージャーは、一定の非アクティブ間隔の後にグローバル作業単位を期限切れにするように構成することができます。
外部トランザクション・マネージャー・ソフトウェアに、そのアプリケーションによって開始されたすべてのトランザクションを最初に完了せずに終了する問題がある場合は、有効期限スキャンを有効にする必要があります。
- AMQ_TRANSACTION_EXPIRY_RESCAN=再スキャン間隔 (ミリ秒)
- AMQ_XA_TRANSACTION_EXPIRY=タイムアウト間隔 (ミリ秒)
# Scan runs every 30 seconds.
# Value is given in milliseconds.
export AMQ_TRANSACTION_EXPIRY_RESCAN=30000
# Transactions of age 60 seconds in the Idle state are regarded as expired.
# Value is given in milliseconds.
export AMQ_XA_TRANSACTION_EXPIRY=60000
rem Scan runs every 30 seconds.
rem Value is given in milliseconds.
set AMQ_TRANSACTION_EXPIRY_RESCAN=30000
rem Transactions of age 60 seconds in the Idle state are regarded as expired.
rem Value is given in milliseconds.
set AMQ_XA_TRANSACTION_EXPIRY=60000
アイドル状態のトランザクションはどのアプリケーション・スレッドにも関連付けられておらず、外部トランザクション・マネージャー・ソフトウェアは、トランザクションを準備済み状態にするために xa_prepare 関数呼び出しをまだ呼び出していません。
外部トランザクション・マネージャー・ソフトウェアが異常終了して再始動した場合、通常はこの状態のトランザクションに対して「コミット」または「ロールバック」は配信されません。
- キュー・マネージャーを再始動する。
- 有効期限スキャンを有効にすると、指定された経過時間より古いアイドル・トランザクションが検出されます。
AMQ_XA_TRANSACTION_EXPIRY を設定して、アプリケーションがトランザクション内で作業を実行してからトランザクションを完了するまでの予想される間隔を考慮します。
AMQ_TRANSACTION_EXPIRY_RESCAN 値を AMQ_XA_TRANSACTION_EXPIRY 値より小さい値に設定します。 これを行うのは、トランザクション・リストのスキャンが AMQ_XA_TRANSACTION_EXPIRY 間隔内で複数回発生するようにするためです。
有効期限スキャンを有効にする必要があるかどうかを決定する方法
有効期限スキャンが必要になるのは、外部トランザクション・マネージャーがあり、そのトランザクションがアイドル・トランザクションを完了せずに終了または異常終了した場合のみです。
この方法で外部トランザクション・マネージャーが終了した場合、キュー・マネージャーを再始動するか、有効期限スキャンを構成していない限り、アプリケーションの Puts および Get of メッセージはコミットもロールバックもされません。
- TRANSTATE は ACTIVE であり、PREPARED ではありません。
- タイム・スタンプは、 dspmqtrnを実行する前にトランザクションが長時間開始されたことを示しています。 タイム・スタンプが最新の場合、これは問題のトランザクションではありません。
- EXTURID は、XA_FORMATID、XA_GTRID、および XA_BQUAL の値が空でないため、これが XA トランザクションであることを示しています。
- OBJECT レコードとして 1 つ以上のアプリケーション・キュー名がリストされており、このトランザクションの下でこれらのキューに対して Puts または Get が実行されたことを示しています。
- アプリケーションが接続されなくなったため、このレコードにはライブ接続情報 (例えば、CONN、PID、TID、APPLTAG、USERID) がありません。
TranNum(0,513)
TRANSTATE(ACTIVE)
UOWLOGDA(2024-05-23) UOWLOGTI(17.03.22)
UOWSTDA(2024-05-23) UOWSTTI(17.03.22)
UOWLOG( )
EXTURID(XA_FORMATID[WASD] XA_GTRID[0000018] XA_BQUAL[0000018])
OBJECT(MY.QUEUE )