6.ActiveMQについて2007.02.14 株式会社四次元データ 宮澤了祐
JMS 6章 ActiveMQについて
6.1.埋め込みMessageBrokerの使用Connectionオブジェクトを作成する際に自動的にサーバーを起動するように設定することが出来ます。 ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(); factory.setUseEmbeddedBroker(true); Connection connection = factory.createConnection(); ActiveMQConnectionFactory#setUseEmbeddedBroker()メソッドを使用します。 このファクトリを使用してコネクションを作成した際にMessageBrokerが起動します。 一つのファクトリから複数のコネクションを作成しようとすると、コネクションごとにMessageBrokerを起動しようとするので注意が必要です。 また設定ファイルを使用したり、URLを設定する場合は次のようにします。
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory();
factory.setBrokerXmlConfig("src/default.xml");
factory.setBrokerURL("vm://localhost");
factory.setUseEmbeddedBroker(true);
Connection connection = factory.createConnection();
setBrokerXmlConfig()メソッドで設定ファイルの設定を行い、setBrokerURL()メソッドでURLを設定します。 設定ファイルを認識するためにはこの両方のメソッドを実行する必要があります。
また設定ファイルを使用するためにはクラスパスに 6.2.ActiveMQConnectionFactoryの取得方法JNDIの使用ActiveMQはJNDIに対応しており、javax.naming.InitialContextを使用してファクトリを取得することが出来ます。 JNDIを使用するには、次のような設定ファイルを作成する必要があります。java.naming.factory.initial = org.activemq.jndi.ActiveMQInitialContextFactory # 標準コネクタのURL java.naming.provider.url = vm://localhost # 埋め込みMessageBrokerの使用 useEmbeddedBroker = true # 設定ファイルへのパス # これは埋め込みMessageBrokerで使用されます。 brokerXmlConfig = file:src/default.xml # キューオブジェクトをJNDIに登録します。 # queue.[JNDI名] = [キューの名前] queue.Queue = MyQueue # トピックオブジェクトをJNDIに登録します。 # topic.[JNDI名] = [トピックの名前] topic.Topic = MyTopic jndi.propertiesファイルをクラスパスの通ったディレクトリに設置します。 JNDIを使用してDestinationオブジェクトを作成します。
InitialContext ic = new InitialContext();
ActiveMQConnectionFactory factory = (ActiveMQConnectionFactory)ic.lookup("queueConnectionFactory");
QueueConnection connection = factory.createQueueConnection();
Queue myQueue = (Queue)ic.lookup("MyQueue");
Topic myTopic = (Topic)ic.lookup("MyTopic");
6.3.メッセージの永続性ActiveMQでは予期せぬエラーでMessageBrokerが終了してしまった場合などに、未送信のメッセージを保持する機能があります。 永続化の設定はbrokerのpersistence要素で設定します。 persistcence以下に様々な永続化の方法を設定します。 Persistenceを用いない設定VMPersitenceを使用します。
<broker>
...
<persistence>
<vmPersistence />
</persistence>
...
</broker>
MessageBrokerを終了した際に未送信のメッセージは消えてしまいます。 journalの使用journalとは、ローカルに一時的にキャッシュファイルを作成する機能です。 直接Persistenceを使用するより高速に動作します。
<broker>
...
<persistence>
<journalPersistence directory="../var/journal">
<jdbcPersistence dataSourceRef="derby-ds"/>
</journalPersistence>
</persistence>
...
</broker>
journalを使用するには、データーベースをPersistenceとして設定する必要があります。 データーベースの使用データーベースを使用するにはbeans要素以下にbean要素としてデーターベースの情報を設定する必要があります。 ActiveMQが対応しているデーターベースには次があります。
以下はActiveMQ内部にあるApacheDerbyデーターベースを使用した例です。
<beans>
<broker>
<persistence>
<jdbcPersistence dataSourceRef="derby-ds"/>
</persistence>
</broker>
<bean id="derby-ds"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName">
<value>org.apache.derby.jdbc.EmbeddedDriver</value>
</property>
<property name="url">
<value>jdbc:derby:derbydb</value>
</property>
<property name="username">
<value></value>
</property>
<property name="password">
<value></value>
</property>
<property name="poolPreparedStatements">
<value>true</value>
</property>
</bean>
</beans>
jdbcPersistece要素のdataSourceRef属性に設定したbeanのidを入力します。 6.4.ActiveMQ4.0系の変更点と新機能2005年11月9日にActiveMQ4.0がリリースされました。 このバージョンでの変更点と新機能について主なものを 紹介します。 変更点以前のバージョンからはいくつかの変更点があり、利用するには注意が必要です。
新機能ActiveMQ4.xで新たに追加された機能について解説します。
|
![]()
![]()
|