メニューボタン
サポートチーム便り2019.10.10

メッセージキューが満杯になるのを防げませんか?

Question

弊社では業務処理の結果を特定のメッセージキューにメッセージとして送信し、監視する仕組みを使用しています。

メッセージキューには日々大量のメッセージが記録される為メッセージキューが満杯になってしまい、定期的に古いメッセージから手動で削除をしています。

自動で古いメッセージの削除を行いメッセージキューが満杯になるのを防ぐことは出来ないでしょうか。

Answer

メッセージキューの設定を変更することで、古いメッセージから削除され新しいメッセージを記録することが出来ます。

メッセージキューが満杯になってしまうというのは、下記のメッセージが出ている状態かと思います。

CPF2460:メッセージ待ち行列 XXXXXXXXXX を拡張することができなかった。

これは、メッセージキューの設定の「MSGQFULL:メッセージ待ち行列満杯時処置」が初期値の"*SNDMSG"になっている為です。

"*WRAP"に変更することで古いメッセージが自動で削除され、新しいメッセージを記録し続けることが出来ます。

以下に変更方法を記します。

CHGMSGQ MSGQ(ライブラリ名/メッセージキュー名) MSGQFULL(*WRAP)

画面ショット

注意点として...

  1. 最も古い通知メッセージか応答済みのメッセージから自動で削除され、以下のメッセージが記録されます。
    CPI2420:メッセージ待ち行列 XXXXXXXXXX が折り返しされた。
  2. 注意点1が実行されてもメッセージキューの空きが足りない場合には、次に応答待ちの照会メッセージに省略値の応答が返された後、自動的に削除され、以下のメッセージが記録されます。
    CPI2421:メッセージ待ち行列 XXXXXXXXXX を折り返すために返答のないメッセージが除去された。
  3. メッセージキュー内に自動で削除されては困るメッセージがある場合は"*SNDMSG"のままとしてください。

by なんちゃってエンジニア

あわせて読みたい記事

PAGE TOP