createQueue または createTopic メソッドおよびデフォルトのメッセージング・プロバイダー
デフォルトのメッセージング・プロバイダーを用いて JMS キューまたは JMS トピックを作成するために、JNDI 検索を使用する代わりに Session.createQueue(String) メソッドまたは Session.createTopic(String) メソッドを使用できます。
Queue q = mySession.createQueue("Q1");
既存の宛先 Q1 を参照するために使用できる JMS キュー・インスタンスを作成します。デフォルトのメッセージング・プ ロバイダーの使用により、既存の宛先は、セッションの接続先のバス上のキ ューまたはトピック・スペースとして存在します。
createQueue
Session.createQueue(String) メ ソッドは、既存の宛先を表す JMS キュー・オブジェクトを作成するために使用します。 この方法は、JNDI 検索により、管理上定義された JMS キ ュー・オブジェクトを取得する代替方法になりますが、この場合は管理が難 しくなります。
- 単純フォーム
- 最も単純なフォームでは、createQueue メソッドのパラメータ
ーは、セッションの接続先のバス上にある既存の宛先の名前です。例えば、Q1 という名前のキューがある場
合は、以下のメソッドにより、その宛先を参照するために使用できる JMS キュ
ー・インスタンスが作成されます。
Queue q = mySession.createQueue("Q1");
- URI フォーム
- さらに複雑な状況では、アプリケーションは URI ベースのフォーマッ
トを使用することができます。URI フォーマットでは、Queue オブジェクトの各種プ
ロパティーを設定するために、任意の数の名前と値のペアを指定することができます。
キュー URI は、プレフィックス queue:// とそれに続く宛先の
名前で示されます。前述の Q1 の単純フォームは次の URI で表すことができます。
Queue q = mySession.createQueue("queue://Q1");
名前と値のペアは疑問符 ? を用いて導入されます。例えば、アプリケーションは セッションを 1 つのバスに接続した後、以下のフォーマットを使用して 、otherBus という異なるバス上に Q2 の JMS キュー・インスタンスを作成 することができます。
IBM MQ にメッセージを送信する際には、キュー名に続いてアットマーク (@)、およびキューが配置されているキュー・マネージャーの名前を指定する必要があります。例えば、以下のようになります。Queue q = mySession.createQueue("queue://Q2?busName=otherBus");
Queue q = mySession.createQueue("queue://Q2@qmgr?busName=otherBus");
複数の名前と値のペアは、アンパーサンド文字 & で 区切ります。例えば、次のようになります。Queue q = mySession.createQueue("queue://Q2?busName=otherBus&deliveryMode= Application&readAhead=AsConnection&priority=6");
- プロパティー
- busName、deliveryMode、priority、readAhead、 および timeToLive。 これらのプロパティーの説明については、生成された API 情報を参照してください。
createTopic
Session.createTopic(String) メ ソッドは、既存の宛先を表す JMS トピック・オブジェクトを作成するため に使用します。(注: トピックとは、存在するトピックではなく、トピック・スペ ースのことです。)この方法は、JNDI 検索により、管理上定義された JMS ト ピック・オブジェクトを取得する代替方法になりますが、この場合は 管理が難しくなります。
- 単純フォーム
- 最も単純なフォームでは、createTopic メソッドのパラメーターは、
セッションの接続先のバス上にあるデフォルト・トピック・スペース内の
トピックの名前です。例えば、デフォルト・トピック・スペースが存在する場合、
デフォルト・トピック・スペースの cats トピックを参照するために
使用できる JMS トピック・インスタンスは次のようになります。
Topic t = mySession.createTopic("cats");
デフォルト以外のトピック・スペースを指定するには、 topicSpace:topic という書式の特殊構文を使用することができます。以下に例を示します。Topic t = mySession.createTopic("kennelTopicSpace:dogs");
- URI フォーム
- さらに複雑な状況では、URI ベースのフォーマットを使用することができます。トピック URI は、プレフィックス topic:// とそれに続くトピックの名前で示されます。前の例は、次の URI とし
て表すことができます。
Topic t = mySession.createTopic("topic://cats"); Topic t = mySession.createTopic("topic://dogs?topicSpace=kennelTopicSpace");
キューと同様に、複数の名前と値のペアは、アンパーサンド & で区切ります。
- プロパティー
- busName、deliveryMode、priority、readAhead、timeToLive、および topicSpace。 これらのプロパティーの説明については、生成された API 情報を参照してください。
MA88 URI のサポート
WebSphere® Application Server バージョン 5.1 アプリケーションは、createQueue および createTopic メソッドを使用して、バージョン 5 組み込みメッセージング・プロバイダー (バージョン 5.1 JMS メッセージング・プロバイダー) を用いて JMS キューおよびトピック・オブジェクトを作成することができます。これらのアプリケーションのマイグレーションを支援するために、 デフォルト・メッセージング・プロバイダー (サービス統合バス) は、createQueue および createTopic メソッドに対する有効な MA88 固有のストリング・パラメーターのラージ・サブセットを提供します。
- デフォルト・キュー・マネージャー
- キューの MA88 URI には、キュー・マネージャーの名前が含まれます
。例えば、次のようになります。
queue://qm/queue
デフォルトのキュー・マネージャーを指定するには、キュー・マネージャー名を省略します。例: queue:///queue (3 つのスラッシュ文字、/// に注意してください)。 デフォルトのキュー・マネージャーの解釈は、現行バス上のキューの概念と論理的に整合しているため、バスは、queue: プレフィックスの後に 3 文字のスラッシュ文字があることを許容します。 これにより、変更を行わなくても、バスでデフォルトのキュー・マネージャーを指定した MA88 キュー URI を使用できます。
- デフォルト以外のキュー・マネージャー
- MA88 キュー URI が、queue://qm/queue のように、デフォルト以外のキュー・マネージャーを指定している場合、これはバスではあいまいな解釈になります。潜在的な問題を強調し、移植プロセス中に宛先が考慮されるように、そのような URI が createQueue() メソッドに渡された場合には JMSException が生成されます。
- MA88 プロパティー
- バス の URI と同様に、MA88 URI には宛先プロパティーを指定
する多くの名前と値のペアを含めることができます。MA88
固有のプロパティーの多くは、バスのプロパティーに直接相当するものを持たず、自動的に無視されます。しかし、以下の MA88 プロパティーはバスの同等物にマップされます。
MA88 での名前 サービス統合バス名 注意 expiry timeToLive persistence deliveryMode 1 = 非パーシスタント
2 = パーシスタント
その他 = アプリケーション
トピック・ワイルドカード変換
メッセージを使用するために 用いるトピックには、ワイルドカードを含めることができます。MA88 で使用するワイルドカード構文はバスで使用する XPath 構文とは異なるため、MA88 URI にワイルドカードが含まれている場合、バスはそれらの XPath のワイルドカードへの変換を試みます。実行される変換は、MA88 URI の中の brokerVersion プロパ ティーの有無によって異なります。WebSphere Application Server バージョン 5.1 のデフォルト・メッセージング・プロバイダーでは、トピック・ワイルドカードを指定した URI で、brokerVersion=1 を 名前と値のペアに含める必要がありました。そのため、バスでは、brokerVersion=1 をトリガーとして使用して、MQSI から XPath へのワイルドカード変換を実行します。
大/小文字の区別
createQueue および createTopic のストリング・パラメーターのすべての部分では、大/小文 字が区別されます。
同じプロパティーの複数インスタンス
URI に、 競合する値を備えた特定のプロパティーの複数オカレンスが含まれている場合は、 どの値を使用するかが指定されません。
MA88 プロパティーとバスのプロパティーの競合
URI に、 競合する値を備えたプロパティーとそのプロパティーの MA88 同等物が含まれてい る場合は、どの値を使用するかが指定されません。
不明プロパティー
プロパティー名が認識されない名 前と値のペアはすべて無視され、エラー報告はありません。
エスケープ特殊文字
- : (コロン)
- これは、トピック・スペースと簡易書式トピック・ストリングのトピ ックとの間の分離文字として使用します。
- ? (疑問符)
- これは、名前と値のペアの開始を示すために使用します。
- & (アンパーサンド)
- これは、複数の名前と値のペアを分離するために使用します。
createTopic("myTop¥¥:ic") 名前「myTop:ic」のトピックを作成
createTopic("topic://my¥¥?Topi¥¥¥¥c") 名前 "my?Topi¥c" を使用してトピックを作成
createQueue("queue://q1?busName=silly¥¥&bus") バス名 "silly&bus" を使用してキューを作成