キューおよびキューファイルの障害に対するユーザの処理について説明します。
MQPUT命令で相手システムがメッセージを送信する場合を例にして,キューおよびキューファイルの障害発生個所について,次の図に示します。また,キューおよびキューファイルの障害とユーザの処理について,図のあとの表に示します。図中の障害の発生個所を示す番号は,表の発生個所と対応づけてあります。
図7-1 メッセージ送信中の障害発生個所
表7-1 キューおよびキューファイルの障害とユーザの処理
発生個所 | 障害の種類 | 障害内容・原因 | MQAの 障害処理 | ユーザの処理 |
---|---|---|---|---|
1 | 転送キュー障害 | 転送キューの属性不正(登録禁止) | MQPUTまたはMQPUT1エラーリターン | MQSET命令またはmqasetコマンドで登録許可に変更後,アプリケーションを再実行してください。 |
転送キューの属性不正(使用方法が転送キュー(MQUS_TRANSMISSION)でない) | 転送キューを再作成後,アプリケーションを再起動してください。 転送キューの再作成方法
| |||
入力用バッファ不足(メモリ不足)
| MQAサービス定義で該当キューファイルグループの入出力バッファ数を大きくして,TP1/Message Queueを正常開始してください。 | |||
2 | 転送キュー障害 | 転送ヘッダなし,転送ヘッダ不正(転送キューに対しMQPUT命令を呼び出し)
| 送信側のデッドレターキューに登録,ログへメッセージ出力 | リモートキューのローカル定義をオープンしMQPUT命令を呼び出すようアプリケーションを修正し,再実行してください。 |
2~5 | キューファイル障害 | 入出力エラー
| キューファイルを障害閉塞状態とし,アプリケーションからのアクセスはエラー 受信側にデッドレターキューあり
| 「7.1.4 キューファイルの入出力エラー」を参照してください。 |
3 | 転送キュー障害 | 転送キューオーバフロー | MQPUTエラーリターン,通信路を回復すると,メッセージを自動送信 | 回線またはチャネル状態を確認して回復してください。アプリケーションを再実行してください。 |
4 | 受信キュー障害 | 受信キューの属性不正(登録禁止)
| チャネル停止後送信側のデッドレターキューに登録,ログへメッセージ出力 | MQSET命令またはmqasetコマンドで登録許可に変更後,アプリケーションを再実行してください。 |
入力用バッファ不足(メモリ不足)
| 受信側のデッドレターキューに登録,ログへメッセージ出力 | MQAサービス定義で該当キューファイルグループの入出力バッファ数を大きくして,TP1/Message Queueを正常開始してください。 | ||
受信キュー満杯
| 受信側のデッドレターキューに登録,ログへメッセージ出力 | 受信キューの最大メッセージ数を増やしてください。またはmqainitコマンドのメッセージ数を増やしてください。 | ||
受信キューなし
| 受信キューを再作成後,アプリケーションを再起動してください。 | |||
5 | イニシエーションキュー障害 | イニシエーションキューの属性不正(使用方法が正常(MQUS_NORMAL)でない)
| トリガメッセージを生成しないでログへメッセージ出力 | イニシエーションキューを再作成後,アプリケーションを再起動してください。 イニシエーションキューの再作成方法
|
イニシエーションキューの属性不正(キュータイプがローカルキュー(MQQT_LOCAL)でない) | ||||
イニシエーションキューの属性不正(登録禁止) | トリガメッセージを生成しない | MQSET命令またはmqasetコマンドで登録許可に変更後,アプリケーションを再実行してください。 | ||
イニシエーションキューを指しているローカルキューの属性不正(プロセス名の指定なし)
| トリガメッセージを生成しないでログへメッセージ出力 | イニシエーションキュー,ローカルキュー,プロセス定義のどれかを再作成後,アプリケーションを再起動してください。 イニシエーションキューおよびローカルキューの再作成方法 「イニシエーションキューの再作成方法」を参照してください。 プロセス定義の再作成方法 TP1/Message Queueを終了し,MQAサービス定義を修正後,TP1/Message Queueを正常開始してください。 | ||
イニシエーションキューを指しているローカルキューの属性不正(プロセス名の指定はあるがプロセス定義なし)
| ||||
イニシエーションキュー満杯
| イニシエーションキューが存在するキューマネジャに定義されているデッドレターキューにトリガメッセージを登録し,ログへメッセージ出力 | イニシエーションキューの最大メッセージ数を増やしてください。またはmqainitコマンドのメッセージ数を増やしてください。 | ||
イニシエーションキューなし
| トリガメッセージを生成しないでログへメッセージ出力 | イニシエーションキューを作成後,アプリケーションを再起動してください。またはTP1/Message Queueを終了してイニシエーションキュー名を修正(mqachgqueコマンド,モデルキュー定義修正)後,TP1/Message Queueを正常開始してください。 | ||
6 | デッドレターキュー障害 | デッドレターキュー満杯
| ログへメッセージ出力 | デッドレターキューの最大メッセージ数を増やしてください。またはmqainitコマンドのメッセージ数を増やしてください。 |
デッドレターキューなし
| デッドレターキューを作成後,アプリケーションを再起動してください。またはTP1/Message Queueを終了し,デッドレターキュー名を修正(キューマネジャ定義修正)後,TP1/Message Queueを正常開始してください。 | |||
デッドレターキューの属性不正(登録禁止)
| MQSET命令またはmqasetコマンドで登録許可に変更後,アプリケーションを再実行してください。 |