Simplified API (簡易 API)
JMS 2.0 で新規に簡易 API が設けられました。これによって、スリムなコーディングとなり、必要なコード量が劇的に削減されます。
Simplified API として、新規に 3 つのオブジェクが導入されました。
JMSContext JMSProducer JMSConsumer
これらのオブジェクトは、JMS 1.1 の Connection、Session、MessageProducer、MessageConsumer オブジェクトの機能を有しています。
Simplified API は、完全に後方互換性があり、旧コードを使い続けたまま、新規コードに Simplified API を使うことができます。
その他、以下のメッセージ処理および例外処理の新規クラスが追加されました。
- javax.jms.CompletionListener
- javax.jms.IllegalStateRuntimeException
- javax.jms.InvalidClientIDRuntimeException
- javax.jms.InvalidDestinationRuntimeException
- javax.jms.InvalidSelectorRuntimeException
- javax.jms.JMSRuntimeException
- その他
遅延メッセージ配信
JMS 2.0 では、メッセージのセンダー側 (プロデューサ) でメッセージ配信をスケジュールすることができるようになりました。これにより、一日の終わりに配信するといった遅延処理をサポートすることができるようになります。
共有サブスクリプション (Shared Subscription)
JMS 2.0 から共有サブスクリプションが導入されました。これは、トピックの個々のサブスクライバーに複数のコンシューマを指定できるようにするものです。
ただし、これら複数のコンシューマの間でメッセージをサブスクライブできるコンシューマは1つだけです。
こうすることで、トピックのメッセージ受信による処理を複数のコンシューマ間で分散させることができるようになります。ここでいう分散処理とは、メッセージ1の処理をコンシューマ A に、メッセージ 2 の処理をコンシューマ B に振り分けて処理することを指します。
共有サブスクリプションは、継続サブスクリプションおよび非継続サブスクリプション毎に設けられています。
共有サブスクリプションの詳細をみる
メッセージの非同期送信
JMS 1.1 では、メッセージのセンダー側 (プロデューサ) はサーバーからACKが返ってくるまでブロックする同期モードで動作していましたが、JMS 2.0 ではメッセージを非同期に送信するメソッドが追加されました。このメソッドでは、サーバーからの ACK を待たずに直ちに次のオペレーションに移行できます。ACKを受信すると、非同期コールバックがインボークされ、送信完了の処理を非同期に行うことができます。
セッション生成の新規メソッド
セッションを生成するためのメソッドが javax.jms.Connection に追加されました。
- createSession(int sessionMode)
このメソッドは、従来の createSession(boolean transacted, int acknowledgeMode) と同じ機能を果たしますが、コードを簡素化するために、アーギュメントが 1 つになりました。
- createSession( )
このメソッドは、JTA トランザクションが稼働している Java EE web または EJB コンテナで使用することを目的としたものです。
このような環境では、createSession(int sessionMode) メソッドで指定したセッション モードが無視されるためです。
新規 createDurableConsumer メソッド
javax.jms.Session インタフェースに MessageConsumer を返す createDurableConsumer メソッドが追加されました。
従来の createDurableSubscription メソッドがドメイン スペシフィックな TopicSubscriber が返されるため、これを避けるために使用します。
AutoCloseable のサポート
下記の各インタフェースが、java.lang.Autocloseable インタフェースをサポートするよう変更されました。
- Connection
- Session
- QueueBrowser
- MessageProducer
- MessageConsumer
-
これによって、アプリケーションが Java SE 7 try-with-resources ステートメントを使用してこれらのオブジェクトを生成できるようになり、明示的に close ( ) を呼び出す必要がなくなりました。
起動プロパティActivation properties
JMS メッセージ ドリブン ビーン (MDB: Message-Driven Bean) を使用する場合の起動プロパティ (MDB activation properties) に追加およびオプション化が実施されました。
(Java EE Connector Architecture specification, version 1.6).
|