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