JMSの利用目的に応じて次のように設計します。
メッセージが宛先に到達すると、自動で処理したい場合
Message Listenerを使用します。
Publish/Subscribeメッセージングモデルにおいて、受信を行うJMSアプリケーションが停止中に配信されたメッセージを受信したい場合
Durable Subscription機能を使用します。
メッセージの欠落を防止したい場合
メッセージの不揮発化機能とローカルトランザクション機能を使用します。
ポイント
メッセージを不揮発化するため、メッセージの送受信にかかるオーバーヘッドが揮発機能使用時よりも高くなります。
このためメッセージの送受信性能に影響を与えます。
メッセージの不揮発化、および揮発化はメッセージの配信モードを、javax.jms.DeliveryMode.PERSISTENT、javax.jms.DeliveryMode.NON_PERSISTENTに設定して行います。
メッセージの配信モードは、以下のいずれかのAPIで設定してください。
javax.jms.MessageProducer.setDeliveryMode(int deliveryMode)
javax.jms.MessageProducer.send(Message message, int deliveryMode, int priority, long timeToLive)
javax.jms.MessageProducer.send(Destination destination, Message message, int deliveryMode, int priority, long timeToLive)
メッセージの処理とデータベースの処理を一貫して保証したい場合
グローバルトランザクション機能を使用します。
受信アプリケーションが興味のある情報だけを取得したい場合
メッセージセレクタ機能を使用します。
資源削減のため、送信拠点/受信拠点ごとに物理格納先を作成しない場合
メッセージセレクタ機能を使用します。
送信拠点/受信拠点が頻繁に変更されるシステム形態であり、その変更のたびにシステムの環境変更をしたくない場合
メッセージセレクタ機能を使用します。
Point-To-Pointメッセージングモデルにおいて、キューに蓄積されているメッセージを参照したい場合
キューブラウザ機能を使用します。