ページの先頭行へ戻る
Interstage Application Server/Interstage Web Server Java EE運用ガイド

3.15.8 高信頼機能

Interstage JMSは、以下の高信頼な機能を提供します。

異常時のメッセージ退避

通常の処理または明示的な管理者による操作以外で、以下などの理由により、システムから破棄されるメッセージが存在します。

上記のような理由でシステムから破棄されたメッセージをデッドメッセージと呼びます。
メッセージブローカは、起動時に自動的にデッドメッセージを配置するデッドメッセージキューを作成します。メッセージブローカは、デッドメッセージをデッドメッセージキューに配置します。デッドメッセージキューには、「mq.sys.dmq」という固有の物理格納先の名前が設定され、削除することはできません。また、デッドメッセージキューに明示的にメッセージを送信することもできません。


異常時のメッセージ退避機能の使用

異常時のメッセージ退避機能は、デフォルトで有効になっています。メッセージ退避機能の使用有無は、物理格納先プロパティuseDMQで設定します。
物理格納先プロパティuseDMQの詳細については、「9.7.7 物理格納先の生成または更新に関するプロパティ」を参照してください。

異常時のメッセージ退避機能を使用しないように変更するコマンド実行例

imqcmd update dst -b localhost:37676 -n JMSQueue -t q -o useDMQ=false

デッドメッセージキューの管理

imqcmdコマンドを使用して、デッドメッセージキューを他の物理格納先と同じように管理できますが、以下の相違点があります。

メッセージの内容

メッセージブローカは、メッセージ全体をデッドメッセージキューに配置できます。または、ヘッダーとプロパティデータだけを残して、メッセージ本体の内容を破棄できます。デフォルトでは、デッドメッセージキューはメッセージ全体を格納します。
デッドメッセージを復元する予定がない場合は、imq.destination.DMQ.truncateBodyメッセージブローカプロパティをtrueに設定してください。これにより、メッセージ本文が破棄され、ヘッダーとプロパティデータだけが残され、デッドメッセージキューのサイズを減らすことが可能です。
imq.destination.DMQ.truncateBodyの詳細については、「9.7.2 ルーティングサービスに関するプロパティ」を参照してください。

メッセージ本文を破棄してデッドメッセージキューに退避するように設定するコマンド実行例

imqcmd update bkr -b localhost:37676 -o imq.destination.DMQ.truncateBody=true

デッドメッセージのロギング

デッドメッセージのロギングとは、以下の事象が発生した場合、メッセージブローカがログ情報を記録する機能です。

デッドメッセージのロギングは、デフォルトでは無効になっています。デッドメッセージのロギングは、imq.destination.logDeadMsgsプロパティで設定します。デッドメッセージのロギングは、デッドメッセージキューを使用するすべての物理格納先に適用されます。物理格納先ごとにロギングを有効または無効に設定できません。
imq.destination.logDeadMsgsプロパティの詳細については、「9.7.6 ログ機能に関するプロパティ」を参照してください。

デッドメッセージのロギングを有効にするコマンド実行例

imqcmd update bkr -b localhost:37676 -o imq.destination.logDeadMsgs=true

デッドメッセージキューからのメッセージの復元

デッドメッセージキューに移動されたメッセージを参照する場合、Interstage JMSのキューブラウザ機能を使用することで、デッドメッセージキューに移動されたメッセージを参照できます。
デッドメッセージキューをJMSアプリケーション内で使用する場合、SessionクラスのcreateQueueメソッドを使用して、デッドメッセージキューを取得してください。

デッドメッセージキューを取得する場合のcreateQueueメソッドの例

Queue deadMessageQueue = session.createQueue("mq.sys.dmq") ;

デッドメッセージキューからのメッセージの破棄

デッドメッセージキューに移動されたメッセージが不要となった場合は、imqcmdコマンドでデッドメッセージキューに移動されたメッセージを破棄できます。詳細については、purge dstサブコマンド、またはpurge durサブコマンドを参照してください。

imqcmd purge dst -b localhost:37676 -t q -n mq.sys.dmq