IBM MQ JMS 拡張機能の使用
IBM® MQ classes for JMS には、 IBM MQ JMS 拡張機能と呼ばれる、 JMS API に対する拡張機能のセットが含まれています。 アプリケーションはこれらの拡張機能を使用して接続ファクトリーや宛先を実行時に動的に作成したり、接続ファクトリーや宛先のプロパティーを設定したりすることができます。
import com.ibm.jms.*;
import com.ibm.mq.jms.*;
import com.ibm.msg.client.wmq.WMQConstants;
- 接続ファクトリーや宛先を管理対象オブジェクトとして Java Naming and Directory Interface (JNDI) ネーム・スペースから取り出す代わりに、それらを実行時に動的に作成する
- 接続ファクトリーおよび宛先のプロパティーを設定する
接続ファクトリーの作成
MQConnectionFactory factory = new MQConnectionFactory();
このステートメントは、すべてそのプロパティーのデフォルト値で MQConnectionFactory オブジェクトを作成します。これは、アプリケーションがバインディング・モードでデフォルトのキュー・マネージャーに接続することを意味します。 アプリケーションをクライアント・モードで接続する場合、またはデフォルト以外のキュー・マネージャーに接続する場合、アプリケーションは接続を作成する前に MQConnectionFactory オブジェクトの適切なプロパティーを設定する必要があります。 これを行う方法については、 接続ファクトリーのプロパティーの設定を参照してください。- MQQueueConnectionFactory
- MQTopicConnectionFactory
- MQXAConnectionFactory
- MQXAQueueConnectionFactory
- MQXATopicConnectionFactory
接続ファクトリーのプロパティーの設定
アプリケーションは、接続ファクトリーの適切なメソッドを呼び出すことにより、接続ファクトリーのプロパティーを設定することができます。 接続ファクトリーは、管理対象オブジェクトまたは実行時に動的に作成されたオブジェクトのいずれかです。
MQConnectionFactory factory = new MQConnectionFactory();
.
factory.setTransportType(WMQConstants.WMQ_CM_CLIENT);
factory.setQueueManager("QM1");
factory.setHostName("HOST1");
factory.setPort(1415);
factory.setChannel("QM1.SVR");
このコードは MQConnectionFactory オブジェクトを作成した後、オブジェクトの 5 つのプロパティーを設定します。 それらのプロパティーを設定すると、アプリケーションは QM1.SVR という名前の MQI チャネルを使用してクライアント・モードでキュー・マネージャー QM1 に接続します。 キュー・マネージャーは HOST1 というホスト名を持つシステムで稼働し、キュー・マネージャーのリスナーはポート番号 1415 で listen します。ブローカーとのリアルタイム接続を使用するアプリケーションは、パブリッシュ/サブスクライブ・スタイルのメッセージングのみ使用できます。 Point-to-Point スタイルのメッセージングは使用できません。
特定の接続ファクトリーのプロパティーの組み合わせのみ有効です。 有効な組み合わせについては、 IBM MQ classes for JMS オブジェクトのプロパティー間の依存関係を参照してください。
接続ファクトリーのプロパティー、およびそのプロパティーを設定するために使用するメソッドについて詳しくは、 IBM MQ classes for JMS オブジェクトのプロパティーを参照してください。
宛先の作成
MQQueue q1 = new MQQueue("Q1");
このステートメントは、すべてそのプロパティーのデフォルト値で MQQueue オブジェクトを作成します。 このオブジェクトは、ローカル・キュー・マネージャーに属する Q1 という IBM MQ キューを表します。 このキューは、ローカル・キュー、別名キュー、またはリモート・キュー定義のいずれかです。MQQueue q2 = new MQQueue("QM2", "Q2");
このステートメントによって作成される MQQueue オブジェクトは、キュー・マネージャー QM2が所有する Q2 という IBM MQ キューを表します。 このようにして識別されるキュー・マネージャーは、ローカル・キュー・マネージャーまたはリモート・キュー・マネージャーのいずれかです。 リモート・キュー・マネージャーの場合は、アプリケーションがこの宛先にメッセージを送信するときに、 WebSphere MQ がメッセージをローカル・キュー・マネージャーからリモート・キュー・マネージャーに経路指定できるように IBM MQ を構成する必要があります。MQQueue q3 = new MQQueue("queue://QM3/Q3?persistence=2&priority=5");
このステートメントによって作成される MQQueue オブジェクトは、キュー・マネージャー QM3 が所有する Q3 と呼ばれる IBM MQ キューを表し、この宛先に送信されるすべてのメッセージは持続し、優先順位 5 を持ちます。 キュー URI について詳しくは、 Uniform Resource Identifier (URI)を参照してください。 MQQueue オブジェクトのプロパティーを設定する別の方法については、 宛先のプロパティーの設定を参照してください。MQTopic t1 = new MQTopic("Sport/Football/Results");
このステートメントは、すべてそのプロパティーのデフォルト値で MQTopic オブジェクトを作成します。 オブジェクトは Sport/Football/Results という名前のトピックを表します。MQTopic t2 = new MQTopic("topic://Sport/Tennis/Results?persistence=1&priority=0");
このステートメントによって作成される MQTopic オブジェクトは、Sport/Tennis/Resultsというトピックを表し、この宛先に送信されるすべてのメッセージは非永続で、優先順位 0 を持ちます。 トピック URI について詳しくは、 Uniform Resource Identifier (URI)を参照してください。 MQTopic オブジェクトのプロパティーを設定する別の方法については、 宛先のプロパティーの設定を参照してください。宛先のプロパティーの設定
アプリケーションは、宛先の適切なメソッドを呼び出すことにより、宛先のプロパティーを設定することができます。 宛先は、管理対象オブジェクトまたは実行時に動的に作成されたオブジェクトのいずれかです。
MQQueue q1 = new MQQueue("Q1");
.
q1.setPersistence(WMQConstants.WMQ_PER_PER);
q1.setPriority(5);
このコードは MQQueue オブジェクトを作成した後、オブジェクトの 2 つのプロパティーを設定します。 それらのプロパティーを設定すると、その宛先に送信されるメッセージはすべて永続メッセージとなり、優先順位は 5 になります。MQTopic t1 = new MQTopic("Sport/Football/Results");
.
t1.setPersistence(WMQConstants.WMQ_PER_NON);
t1.setPriority(0);
このコードは MQTopic オブジェクトを作成した後、オブジェクトの 2 つのプロパティーを設定します。 それらのプロパティーを設定すると、その宛先に送信されるメッセージはすべて非永続メッセージとなり、優先順位は 0 になります。宛先のプロパティー、およびそのプロパティーの設定に使用されるメソッドについて詳しくは、 IBM MQ classes for JMS オブジェクトのプロパティーを参照してください。