サポートチーム便り2019.10.10
メッセージキューが満杯になるのを防げませんか?
Question
弊社では業務処理の結果を特定のメッセージキューにメッセージとして送信し、監視する仕組みを使用しています。
メッセージキューには日々大量のメッセージが記録される為メッセージキューが満杯になってしまい、定期的に古いメッセージから手動で削除をしています。
自動で古いメッセージの削除を行いメッセージキューが満杯になるのを防ぐことは出来ないでしょうか。
Answer
メッセージキューの設定を変更することで、古いメッセージから削除され新しいメッセージを記録することが出来ます。
メッセージキューが満杯になってしまうというのは、下記のメッセージが出ている状態かと思います。
CPF2460:メッセージ待ち行列 XXXXXXXXXX を拡張することができなかった。
これは、メッセージキューの設定の「MSGQFULL:メッセージ待ち行列満杯時処置」が初期値の"*SNDMSG"になっている為です。
"*WRAP"に変更することで古いメッセージが自動で削除され、新しいメッセージを記録し続けることが出来ます。
以下に変更方法を記します。
CHGMSGQ MSGQ(ライブラリ名/メッセージキュー名) MSGQFULL(*WRAP)
注意点として...
- 最も古い通知メッセージか応答済みのメッセージから自動で削除され、以下のメッセージが記録されます。
CPI2420:メッセージ待ち行列 XXXXXXXXXX が折り返しされた。 - 注意点1が実行されてもメッセージキューの空きが足りない場合には、次に応答待ちの照会メッセージに省略値の応答が返された後、自動的に削除され、以下のメッセージが記録されます。
CPI2421:メッセージ待ち行列 XXXXXXXXXX を折り返すために返答のないメッセージが除去された。 - メッセージキュー内に自動で削除されては困るメッセージがある場合は"*SNDMSG"のままとしてください。
by なんちゃってエンジニア