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>「イニシエーションキューの使用種別」
トリガメッセージを生成しないでログへメッセージ出力イニシエーションキューを再作成後,アプリケーションを再起動してください。
イニシエーションキューの再作成方法
  • TP1/Message Queueを終了してください。MQAサービス定義のmqaqueatl定義コマンドを使用してイニシエーションキューを再作成したあと,またはmqachgqueコマンドで該当するキューの使用方法をローカルキュー(MQQT_LOCAL)に変更したあと,TP1/Message Queueを正常開始してください。
  • 動的キューの場合,キューを削除(MQCLOSE命令)してください。
    TP1/Message Queueを終了し,モデルキューの定義を修正後,動的キューを作成(MQOPEN命令)してください。
イニシエーションキューの属性不正(キュータイプがローカルキュー(MQQT_LOCAL)でない)
イニシエーションキューの属性不正(登録禁止)トリガメッセージを生成しないMQSET命令またはmqasetコマンドで登録許可に変更後,アプリケーションを再実行してください。
イニシエーションキューを指しているローカルキューの属性不正(プロセス名の指定なし)
受信側:<04228-E>「プロセス定義がない」
トリガメッセージを生成しないでログへメッセージ出力イニシエーションキュー,ローカルキュー,プロセス定義のどれかを再作成後,アプリケーションを再起動してください。
イニシエーションキューおよびローカルキューの再作成方法
「イニシエーションキューの再作成方法」を参照してください。
プロセス定義の再作成方法
TP1/Message Queueを終了し,MQAサービス定義を修正後,TP1/Message Queueを正常開始してください。
イニシエーションキューを指しているローカルキューの属性不正(プロセス名の指定はあるがプロセス定義なし)
受信側:<04228-E>「プロセス定義がない」
イニシエーションキュー満杯
  • キューの深さの最大値が小さい
  • キューファイル作成時(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が付きます。
「 」:メッセージログの内容です。