第26章 JMS


プロデューサーとコンシューマーの両方がサポート対象

このコンポーネントを使用すると、JMS キューまたはトピックとの間でメッセージを送信(または消費)できます。宣言的トランザクションには Spring の JMS サポートを使用します。これには、送信に Spring の JmsTemplate や、使用する MessageListenerContainer が含まれます。

Maven ユーザーは、このコンポーネントの pom.xml に以下の依存関係を追加する必要があります。

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-jms</artifactId>
    <version>{CamelSBVersion}</version>
    <!-- use the same version as your Camel core version -->
</dependency>
Copy to Clipboard Toggle word wrap
注記

ActiveMQ
を使用
します。Apache ActiveMQ を使用している場合は、ActiveMQ 用に最適化されているため、ActiveMQ コンポーネントを使用することが推奨されます。このページのすべてのオプションとサンプルも ActiveMQ コンポーネントに対して有効です。

注記

トランザクション とキャッシュ
以下
のトランザクション レベルと キャッシュレベルを参照してください。JMS でトランザクションを使用している場合は、パフォーマンスに影響を与える可能性があります。

注記

JMS でのリクエスト/応答
リクエスト/応答:Camel にはパフォーマンスおよびクラスター環境に設定するオプションを多数提供するため、このページの Request-reply over JMS について、リクエスト/リプライに関する重要なメモについてさらに JMS を読み取ってください。

26.1. URI 形式

jms:[queue:|topic:]destinationName[?options]
Copy to Clipboard Toggle word wrap

destinationName は JMS キューまたはトピック名です。デフォルトでは、destinationName はキュー名として解釈されます。たとえば、キューに接続するには、FOO.BAR を次のように使用します。

jms:FOO.BAR
Copy to Clipboard Toggle word wrap

必要に応じて、オプションの queue: 接頭辞を含めることができます。

jms:queue:FOO.BAR
Copy to Clipboard Toggle word wrap

トピックに接続するには、topic: 接頭辞を含める 必要があり ます。たとえば、Stocks.Prices トピックに接続するには、以下を使用します。

jms:topic:Stocks.Prices
Copy to Clipboard Toggle word wrap

以下の形式を使用して URI にクエリーオプションを追加します。

?option=value&option=value&…

26.1.1. ActiveMQ の使用

JMS コンポーネントは、メッセージ送信に Spring 2 の JmsTemplate を再利用します。これは、J2EE 以外のコンテナーでの使用に理想的ではなく、パフォーマンスが低下 するのを防ぐために、通常 JMS プロバイダーでキャッシュを必要とします。

Apache ActiveMQ をメッセージブローカーとして使用する場合は、以下のいずれかを行うことが推奨されます。

  • ActiveMQ を効率的に使用するように最適化されている ActiveMQ コンポーネントを使用する
  • ActiveMQ の PoolingConnectionFactory を使用します。

26.1.2. トランザクションおよびキャッシュレベル

メッセージを使用し、トランザクション(transacted=true)を使用している場合、キャッシュレベルのデフォルト設定はパフォーマンスに影響を与える可能性があります。

XA トランザクションを使用している場合は、XA トランザクションが適切に機能しなくなる可能性があるため、キャッシュできません。

XA を使用してい ない 場合は、cacheLevelName=CACHE_CONSUMER の設定など、パフォーマンスの速度を上げるようにキャッシュを検討してください。

cacheLevelName のデフォルト設定は CACHE_AUTO です。このデフォルトは、モードを自動的に検出し、それに応じてキャッシュレベルを設定します。

  • transacted=false の場合は CACHE_CONSUMER
  • transacted=true の場合は CACHE_NONE

そのため、デフォルト設定が保存されているとすることができます。非 XA トランザクションを使用している場合は、cacheLevelName=CACHE_CONSUMER の使用を検討してください。

26.1.3. 永続サブスクリプション

永続トピックサブスクリプションを使用する場合は、clientIddurableSubscriptionName の両方を指定する必要があります。clientId の値は一意でなければならず、ネットワーク全体の単一の JMS 接続インスタンスによってのみ使用できます。この制限を回避するために、代わり に仮想トピック を使用することが推奨されます。ここ での永続メッセージングに関する詳細な背景。

26.1.4. メッセージヘッダーのマッピング

メッセージヘッダーを使用する場合、JMS 仕様ではヘッダー名が有効な Java 識別子である必要があります。そのため、ヘッダーに有効な Java 識別子に名前を付けてみてください。これを行う利点の 1 つは、JMS セレクター内でヘッダーを使用できることです(SQL92 構文でヘッダーの Java 識別子構文が義務付けられます)。

デフォルトでは、ヘッダー名をマッピングする簡単なストラテジーが使用されます。ストラテジーは、以下に示すようにヘッダー名のドットとハイフンを置き換え、ヘッダー名がネットワーク経由で送信される JMS メッセージから復元されるときに置換を元に戻すことです。意味を確認するBean コンポーネントで呼び出すメソッド名を失うことなく、File Component の filename ヘッダーを失うことはありません。

Camel でヘッダー名を受け入れる現在のヘッダー名ストラテジーは次のとおりです。

  • ドットは 'DOT' に置き換えられ、Camel がメッセージを消費すると置換が逆になります。
  • ハイフンは HYPHEN に置き換えられ、Camel が メッセージを消費すると代替が逆になります。

JMS エンドポイントで多くの異なるプロパティーを設定できます。これは、JMSConfiguration オブジェクトのプロパティーにマッピングされます。

注記

Spring JMS へのマッピング
これらのプロパティーの多くは、Camel がメッセージの送受信に使用する Spring JMS のプロパティーにマッピングします。そのため、関連する Spring ドキュメント を参照して、これらのプロパティーの詳細情報を取得できます。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat