durable Subscriberを作成します。durable Subscriberは、イベントチャネルにメッセージを要求します。
Durable Subscription機能を使用してメッセージを受信する手続き例と処理の流れを以下に説明します。
[Durable Subscription機能を使用したMessageConsumer]
import javax.jms.*; import javax.naming.*; public class SubscriberD { public static void main( String[] args ) { Connection connection = null; ... try { java.util.Hashtable env = new java.util.Hashtable( ); env.put ( javax.naming.Context.INITIAL_CONTEXT_FACTORY , "com.fujitsu.interstage.j2ee.jndi.InitialContextFactoryForClient" ); InitialContext initialContext = new InitialContext(env); /* 1 */ ConnectionFactory connectionFactory = (ConnectionFactory) initialContext.lookup("java:comp/env/jms/ConnectionFactory"); /* 2 */ Topic topic = (Topic)initialContext.lookup("java:comp/env/jms/Topic"); /* 3 */ connection = connectionFactory.createConnection(); /* 4 */ Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); /* 5 */ TopicSubscriber topicSubscriber = session.createDurableSubscriber(topic, "dsub"); /* 6 */ connection.start(); /* 7 */ Message message = topicSubscriber.receive(); /* 8 */ topicSubscriber.close(); /* 9 */ session.unsubscribe("dsub"); /* 10 */ } catch( Exception e ) { ... } finally { if( null != connection ) { try { connection.close(); /* 11 */ } catch( Exception e ) { ... } } } } }
JNDIの開始コンテキストを構築します。
ConnectionFactoryオブジェクトを取得します(JNDI名が“ConnectionFactory”の場合)。
Topic オブジェクトを取得します(JNDI名が“Topic”の場合)。
Connectionを作成します。
Sessionを作成します。
Durable TopicSubscriberを作成します(Durable Subscription名が“dsub”の場合)。
接続によるメッセージの配信を開始します。
メッセージを受信します。
Durable TopicSubscriberをクローズします。
Durable TopicSubscriberを解除します(アプリケーション中断中に送信されたメッセージを、アプリケーション再起動後に受信しない場合)。
Connectionをクローズします。
注意
JNDIの開始コンテキスト構築時の環境プロパティの指定については、“J2EEアプリケーションクライアント”を参照してください。
Durable TopicSubscriberを解除すると、JMSプロバイダがアプリケーションに代わって持続している接続状態が削除されるため、アプリケーション中断中に送信されたメッセージをアプリケーション再起動後に受信することはできません。Durable Subscription機能が必要なくなった場合にだけDurable TopicSubscriberを解除してください。