JMS 名前空間のサポート
Spring は、JMS 構成を簡素化するための XML 名前空間を提供します。JMS 名前空間要素を使用するには、次の例に示すように、JMS スキーマを参照する必要があります。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jms="http://www.springframework.org/schema/jms" (1)
xsi:schemaLocation="
http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/jms
https://www.springframework.org/schema/jms/spring-jms.xsd">
<!-- bean definitions here -->
</beans>
1 | JMS スキーマの参照。 |
名前空間は、<annotation-driven/>
、<listener-container/>
、<jca-listener-container/>
という 3 つのトップレベル要素で構成されます。<annotation-driven/>
により、アノテーション駆動型のリスナーエンドポイントの使用が可能になります。<listener-container/>
および <jca-listener-container/>
は共有リスナーコンテナー構成を定義し、<listener/>
子要素を含めることができます。次の例は、2 つのリスナーの基本構成を示しています。
<jms:listener-container>
<jms:listener destination="queue.orders" ref="orderService" method="placeOrder"/>
<jms:listener destination="queue.confirmations" ref="confirmationLogger" method="log"/>
</jms:listener-container>
上記の例は、MessageListenerAdapter
を使用するに示すように、2 つの異なるリスナーコンテナー Bean 定義と 2 つの異なる MessageListenerAdapter
Bean 定義を作成することと同等です。前の例に示した属性に加えて、listener
要素にはいくつかのオプションのものを含めることができます。次の表に、使用可能なすべての属性を示します。
属性 | 説明 |
---|---|
| ホスティングリスナーコンテナーの Bean 名。指定しない場合、Bean 名が自動的に生成されます。 |
|
The destination name for this listener, resolved through the |
|
The bean name of the handler object. |
| 呼び出すハンドラーメソッドの名前。 |
| レスポンスメッセージを送信するデフォルトのレスポンス宛先の名前。これは、 |
| 永続サブスクリプションの名前(ある場合)。 |
| このリスナーのオプションのメッセージセレクター。 |
| このリスナーに対して開始する同時セッションまたはコンシューマーの数。この値は、最大数を示す単純な数値(たとえば、 |
<listener-container/>
要素は、いくつかのオプション属性も受け入れます。これにより、さまざまな戦略(taskExecutor
や destinationResolver
など)のカスタマイズ、および基本的な JMS 設定とリソース参照が可能になります。これらの属性を使用することにより、名前空間の利便性を活用しながら、高度にカスタマイズされたリスナーコンテナーを定義できます。
次の例に示すように、Bean の id
を指定して factory-id
属性を介して公開することにより、そのような設定を JmsListenerContainerFactory
として自動的に公開できます。
<jms:listener-container connection-factory="myConnectionFactory"
task-executor="myTaskExecutor"
destination-resolver="myDestinationResolver"
transaction-manager="myTransactionManager"
concurrency="10">
<jms:listener destination="queue.orders" ref="orderService" method="placeOrder"/>
<jms:listener destination="queue.confirmations" ref="confirmationLogger" method="log"/>
</jms:listener-container>
次の表に、使用可能なすべての属性を示します。個々のプロパティの詳細については、AbstractMessageListenerContainer
(Javadoc) のクラスレベルの javadoc およびその具象サブクラスを参照してください。javadoc では、トランザクションの選択とメッセージの再配信シナリオについても説明しています。
属性 | 説明 |
---|---|
| このリスナーコンテナーの型。使用可能なオプションは |
| 完全修飾クラス名としてのカスタムリスナーコンテナー実装クラス。デフォルトは、 |
| 指定された |
| JMS |
| JMS リスナー呼び出し側の Spring |
| JMS |
| JMS メッセージをリスナーメソッドの引数に変換するための |
|
|
| このリスナーの JMS 宛先型: |
| レスポンスの JMS 宛先型: |
| このリスナーコンテナーの JMS クライアント ID。永続サブスクリプションを使用する場合は、指定する必要があります。 |
| JMS リソースのキャッシュレベル: |
| ネイティブ JMS 確認モード: |
| 外部 |
| リスナーごとに開始する同時セッションまたはコンシューマーの数。最大数を示す単純な数値(たとえば、 |
| 単一セッションにロードするメッセージの最大数。この数を増やすと、同時コンシューマーが枯渇する可能性があることに注意してください。 |
| 受信呼び出しに使用するタイムアウト(ミリ秒)。デフォルトは |
| 回復試行の間隔を計算するために使用する |
| 回復試行の間隔をミリ秒単位で指定します。指定した間隔で |
| このコンテナーが開始および停止するライフサイクルフェーズ。値が低いほど、このコンテナーは早く起動し、遅く停止します。デフォルトは |
次の例に示すように、jms
スキーマサポートを使用した JCA ベースのリスナーコンテナーの構成は非常に似ています。
<jms:jca-listener-container resource-adapter="myResourceAdapter"
destination-resolver="myDestinationResolver"
transaction-manager="myTransactionManager"
concurrency="10">
<jms:listener destination="queue.orders" ref="myMessageListener"/>
</jms:jca-listener-container>
次の表は、JCA バリアントで使用可能な構成オプションを示しています。
属性 | 説明 |
---|---|
| 指定された |
| JCA |
|
|
| JMS |
| JMS メッセージをリスナーメソッドの引数に変換するための |
| このリスナーの JMS 宛先型: |
| レスポンスの JMS 宛先型: |
| このリスナーコンテナーの JMS クライアント ID。永続サブスクリプションを使用する場合は指定する必要があります。 |
| ネイティブ JMS 確認モード: |
| 受信メッセージごとに XA トランザクションを開始するための Spring |
| リスナーごとに開始する同時セッションまたはコンシューマーの数。最大数を示す単純な数値(たとえば |
| 単一セッションにロードするメッセージの最大数。この数を増やすと、同時コンシューマーが枯渇する可能性があることに注意してください。 |