WebSphere MQ: メッセージの完全性 (1) Persistent/Non Persistent Message

WebSphere MQにおけるキュー・マネージャー再起動後のローカル・キュー上のパーシステント・メッセージ、ノンパーシステント・メッセージの状態を確認する。(当ブログのWebSphere MQに関する前回の記事はこちら。参考文献は記事末尾をご参照。)

結論から言うと、Persistentメッセージ(ディスク上)はキュー・マネージャーの再起動後も存続し、Non Persistentメッセージ(メモリ上)は消える。

キュー構成の定義

MQSCコマンド・インターフェイスを用いて下記の様にローカル・キューおよび別名キューを作成する。

Default Persistent属性がYESのローカル・キューQL.AとNOの別名キューQA.Aを作成した。

Persistent/Non Persistent MSGのPUT

これらのキューに対してamqsputサンプル・プログラムでメッセージをputすると対象キューのdefPersistence属性の値により、キューにputされるメッセージがPersistentかNon Persistentかが決まる。

putされたメッセージの属性をamqsbcgサンプル・プログラムを用いて確認する。

確かにQL.AにputしたメッセージはPersistence : 1で、QA.AにputしたメッセージはPersistence : 0となり、それぞれ、キューのdefPersistence属性に沿ったメッセージがputされていることが分かる。

キュー・マネージャーの停止→再起動

障害の発生を想定してendmqm -i オプションで即時終了(実行中のMQIコール終了後に終了)させた後、再度起動し、各メッセージの存続を確認する。

確かに、Non Persistent メッセージが消えていることを確認できた。

参考ドキュメント