52.2. URI 形式
jms:[queue:|topic:]destinationName[?options]
jms:[queue:|topic:]destinationName[?options]
ここで、destinationName は JMS キューまたはトピック名です。デフォルトでは、destinationName はキュー名として解釈されます。たとえば、キューに接続するには、FOO.BAR を次のように使用します。
jms:FOO.BAR
jms:FOO.BAR
必要に応じて、オプションの queue: 接頭辞を含めることができます。
jms:queue:FOO.BAR
jms:queue:FOO.BAR
トピックに接続するには、topic: 接頭辞を含める 必要 があります。たとえば、トピック Stocks.Prices に接続するには、次を使用します。
jms:topic:Stocks.Prices
jms:topic:Stocks.Prices
次の形式を使用して、クエリーオプションを URI に追加します。
?option=value&option=value&…
52.2.1. ActiveMQ の使用 リンクのコピーリンクがクリップボードにコピーされました!
JMS コンポーネントは、Spring 2 の JmsTemplate を再利用してメッセージを送信します。これは非 J2EE コンテナーでの使用には理想的ではなく、通常、パフォーマンスの低下 を避けるために JMS プロバイダーでのキャッシュが必要になります。
Apache ActiveMQ をメッセージブローカーとして使用する場合は、次のいずれかを実行することを推奨します。
- ActiveMQ を効率的に使用するためにすでに最適化されている ActiveMQ コンポーネントを使用する
-
ActiveMQ で
PoolingConnectionFactoryを使用します。
52.2.2. トランザクションとキャッシュレベル リンクのコピーリンクがクリップボードにコピーされました!
メッセージを消費してトランザクションを使用している場合 (transacted=true)、キャッシュレベルのデフォルト設定がパフォーマンスに影響を与える可能性があります。
XA トランザクションを使用している場合は、XA トランザクションが正しく機能しなくなる可能性があるため、キャッシュできません。
XA を使用して いない 場合は、cacheLevelName=CACHE_CONSUMER を設定するなど、キャッシュを使用してパフォーマンスを高速化することを検討する必要があります。
cacheLevelName のデフォルト設定は CACHE_AUTO です。このデフォルトの自動モードはモードを検出し、それに応じてキャッシュレベルを設定します。
-
transacted=falseの場合はCACHE_CONSUMER -
transacted=trueの場合はCACHE_NONE
したがって、デフォルト設定は保守的であると言えます。非 XA トランザクションを使用している場合は、cacheLevelName=CACHE_CONSUMER の使用を検討してください。
52.2.3. JMS 1.1 の永続サブスクリプション リンクのコピーリンクがクリップボードにコピーされました!
永続トピックサブスクリプションを使用する場合は、clientId と durableSubscriptionName の両方を指定する必要があります。clientId の値は一意である必要があり、ネットワーク全体で単一の JMS 接続インスタンスによってのみ使用できます。
Apache ActiveMQ Classic を使用している場合は、Virtual Topic と呼ばれる機能を使用することが推奨されます。これにより、一意の clientId が不要になります。この機能を活用する方法の詳細は、Artemis または ActiveMQ Classic のドキュメントを参照してください。ActiveMQ Classic の永続メッセージングの詳細は、こちら を参照してください。
52.2.3.1. JMS 2.0 の永続サブスクリプション リンクのコピーリンクがクリップボードにコピーされました!
永続トピックサブスクリプションを使用する場合は、durableSubscriptionName を指定する必要があります。
52.2.4. メッセージヘッダーのマッピング リンクのコピーリンクがクリップボードにコピーされました!
JMS 仕様では、メッセージヘッダーを使用する場合、ヘッダー名は有効な Java 識別子である必要があると規定されています。そのため、有効な Java 識別子になるようにヘッダーに名前を付けるようにしてください。これを行う利点の 1 つは、JMS セレクター内でヘッダーを使用できることです (その SQL92 構文では、ヘッダーの Java 識別子構文が義務付けられています)。
デフォルトでは、ヘッダー名をマッピングする単純な方法が使用されます。以下に示すように、ヘッダー名のドットとハイフンをすべて置き換え、ネットワーク経由で送信された JMS メッセージからヘッダー名が復元されたときに置き換えを元に戻す方法です。意味を確認するBean コンポーネントで呼び出すメソッド名が失われたり、ファイルコンポーネントのファイル名ヘッダーが失われたりすることはもうありません。
Camel でヘッダー名を受け入れるための現在のヘッダー名戦略は次のとおりです。
- ドットは `DOT` に置き換えられ、Camel がメッセージを消費すると置換が逆になります
- ハイフンは `HYPHEN` に置き換えられ、Camel がメッセージを消費すると置換が逆になります
JMS エンドポイントでさまざまなプロパティーを設定できます。これらのプロパティーは、JMSConfiguration オブジェクトのプロパティーにマップされます。
Spring JMS へのマッピング
これらのプロパティーの多くは、Camel がメッセージの送受信に使用する Spring JMS のプロパティーにマップされます。したがって、関連する Spring ドキュメントを参照することで、これらのプロパティーに関する詳細情報を取得できます。