Hitachi

OpenTP1 Version 7 OpenTP1 メッセージキューイング機能 TP1/Message Queue 使用の手引


7.1.1 キューおよびキューファイルの障害とユーザの処理

キューおよびキューファイルの障害に対するユーザの処理について説明します。

MQPUT命令で相手システムがメッセージを送信する場合を例にして,キューおよびキューファイルの障害発生個所について,次の図に示します。また,キューおよびキューファイルの障害とユーザの処理について,図のあとの表に示します。図中の障害の発生個所を示す番号は,表の発生個所と対応づけてあります。

図7‒1 メッセージ送信中の障害発生個所

[図データ]

表7‒1 キューおよびキューファイルの障害とユーザの処理

発生個所

障害の種類

障害内容・原因

MQAの

障害処理

ユーザの処理

1

転送キュー障害

転送キューの属性不正(登録禁止)

MQPUTまたはMQPUT1エラーリターン

MQSET命令またはmqasetコマンドで登録許可に変更後,アプリケーションを再実行してください。

転送キューの属性不正(使用方法が転送キュー(MQUS_TRANSMISSION)でない)

転送キューを再作成後,アプリケーションを再起動してください。

転送キューの再作成方法

  • TP1/Message Queueを終了してください。mqaqueatl定義コマンドを使用して転送キューを再作成したあと,またはmqachgqueコマンドで該当するキューの使用方法を転送キュー(MQUS_TRANSMISSION)に変更したあと,TP1/Message Queueを正常開始してください。

  • 動的キューの場合,キューを削除(MQCLOSE命令)してください。

    TP1/Message Queueを終了し,モデルキューの定義を修正後,動的キューを作成(MQOPEN命令)してください。

入力用バッファ不足(メモリ不足)

<26188-E>「入出力バッファが満杯」

MQAサービス定義で該当キューファイルグループの入出力バッファ数を大きくして,TP1/Message Queueを正常開始してください。

2

転送キュー障害

転送ヘッダなし,転送ヘッダ不正(転送キューに対しMQPUT命令を呼び出し)

<16334-E>「メッセージ異常検出」

送信側のデッドレターキューに登録,ログへメッセージ出力

リモートキューのローカル定義をオープンしMQPUT命令を呼び出すようアプリケーションを修正し,再実行してください。

2〜5

キューファイル障害

入出力エラー

送信側:<04200-E>「I/Oエラー」

受信側:<04200-E>「I/Oエラー」

キューファイルを障害閉塞状態とし,アプリケーションからのアクセスはエラー

受信側にデッドレターキューあり

  • デッドレターキューに登録

受信側にデッドレターキューなし

  • 非永続メッセージは損失

  • 永続メッセージは,送信側の転送キューに戻る

7.1.4 キューファイルの入出力エラー」を参照してください。

3

転送キュー障害

転送キューオーバフロー

MQPUTエラーリターン,通信路を回復すると,メッセージを自動送信

回線またはチャネル状態を確認して回復してください。アプリケーションを再実行してください。

4

受信キュー障害

受信キューの属性不正(登録禁止)

送信側:<16335-W>「デッドレターキューに登録」

受信側:<16333-E>「キューファイル障害発生」

チャネル停止後送信側のデッドレターキューに登録,ログへメッセージ出力

MQSET命令またはmqasetコマンドで登録許可に変更後,アプリケーションを再実行してください。

入力用バッファ不足(メモリ不足)

受信側:<26188-E>「入出力バッファが満杯」

受信側のデッドレターキューに登録,ログへメッセージ出力

MQAサービス定義で該当キューファイルグループの入出力バッファ数を大きくして,TP1/Message Queueを正常開始してください。

受信キュー満杯

  • キューの深さの最大値が小さい

  • キューファイル作成時(mqainitコマンド)のメッセージ数が小さい

受信側:<16333-E>「キューファイル障害発生」

受信側のデッドレターキューに登録,ログへメッセージ出力

受信キューの最大メッセージ数を増やしてください。またはmqainitコマンドのメッセージ数を増やしてください。

受信キューなし

  • 受信キュー未作成

  • 送信側の受信キュー指定

<16333-E>「キューファイル障害発生」

受信キューを再作成後,アプリケーションを再起動してください。

5

イニシエーションキュー障害

イニシエーションキューの属性不正(使用方法が正常(MQUS_NORMAL)でない)

受信側:<04229-E>「イニシエーションキューの使用種別」

トリガメッセージを生成しないでログへメッセージ出力

イニシエーションキューを再作成後,アプリケーションを再起動してください。

イニシエーションキューの属性不正(キュータイプがローカルキュー(MQQT_LOCAL)でない)

イニシエーションキューの再作成方法

  • TP1/Message Queueを終了してください。MQAサービス定義のmqaqueatl定義コマンドを使用してイニシエーションキューを再作成したあと,またはmqachgqueコマンドで該当するキューの使用方法をローカルキュー(MQQT_LOCAL)に変更したあと,TP1/Message Queueを正常開始してください。

  • 動的キューの場合,キューを削除(MQCLOSE命令)してください。

    TP1/Message Queueを終了し,モデルキューの定義を修正後,動的キューを作成(MQOPEN命令)してください。

イニシエーションキューの属性不正(登録禁止)

トリガメッセージを生成しない

MQSET命令またはmqasetコマンドで登録許可に変更後,アプリケーションを再実行してください。

イニシエーションキューを指しているローカルキューの属性不正(プロセス名の指定なし)

受信側:<04228-E>「プロセス定義がない」

トリガメッセージを生成しないでログへメッセージ出力

イニシエーションキュー,ローカルキュー,プロセス定義のどれかを再作成後,アプリケーションを再起動してください。

イニシエーションキューを指しているローカルキューの属性不正(プロセス名の指定はあるがプロセス定義なし)

受信側:<04228-E>「プロセス定義がない」

イニシエーションキューおよびローカルキューの再作成方法

「イニシエーションキューの再作成方法」を参照してください。

プロセス定義の再作成方法

TP1/Message Queueを終了し,MQAサービス定義を修正後,TP1/Message Queueを正常開始してください。

イニシエーションキュー満杯

  • キューの深さの最大値が小さい

  • キューファイル作成時(mqainitコマンド)のメッセージ数が小さい

受信側:<04241-E>「トリガメッセージの登録に失敗」

イニシエーションキューが存在するキューマネジャに定義されているデッドレターキューにトリガメッセージを登録し,ログへメッセージ出力

イニシエーションキューの最大メッセージ数を増やしてください。またはmqainitコマンドのメッセージ数を増やしてください。

イニシエーションキューなし

  • イニシエーションキュー未作成

  • 送信側のイニシエーションキュー名誤り

送信側:<04227-E>「イニシエーションキューがない」

トリガメッセージを生成しないでログへメッセージ出力

イニシエーションキューを作成後,アプリケーションを再起動してください。またはTP1/Message Queueを終了してイニシエーションキュー名を修正(mqachgqueコマンド,モデルキュー定義修正)後,TP1/Message Queueを正常開始してください。

6

デッドレターキュー障害

デッドレターキュー満杯

  • キューの深さの最大値が小さい

  • キューファイル作成時(mqainitコマンド)のメッセージ数が小さい

送信側:<16345-E>「エラーデータ受信」

受信側:<16333-E>「キューファイル障害発生」

ログへメッセージ出力

デッドレターキューの最大メッセージ数を増やしてください。またはmqainitコマンドのメッセージ数を増やしてください。

デッドレターキューなし

  • デッドレターキュー未作成

    受信側:<16333-E>「キューファイル障害発生」

  • 送信側のデッドレターキュー名誤り

    送信側:<16333-E>「キューファイル障害発生」

デッドレターキューを作成後,アプリケーションを再起動してください。またはTP1/Message Queueを終了し,デッドレターキュー名を修正(キューマネジャ定義修正)後,TP1/Message Queueを正常開始してください。

デッドレターキューの属性不正(登録禁止)

送信側:<16345-E>「エラーデータ受信」

受信側:<16333-E>「キューファイル障害発生」

MQSET命令またはmqasetコマンドで登録許可に変更後,アプリケーションを再実行してください。

(凡例)

< >:出力されるメッセージログIDです。メッセージログIDには,先頭にKFCAが付きます。

「 」:メッセージログの内容です。