JMS で Azure Service Bus を使用する
この記事の対象: ✔️ バージョン 4.14.0 ✔️ バージョン 5.8.0
この記事では、Spring JMS フレームワークに統合された JMS API で Azure Service Bus を使用する方法について説明します。
AZURE Service Bus 接続文字列を指定する必要があります。これは、AMQP ブローカーのログイン ユーザー名、パスワード、およびリモート URI に解析されます。
依存関係のセットアップ
Azure Service Bus を使用するように Spring JMS アプリケーションを移行する場合は、次の依存関係を追加します。
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-servicebus-jms</artifactId>
</dependency>
構成
次の表では、Spring JMS サポートを使用する場合の構成可能なプロパティについて説明します。
プロパティ | 説明 |
---|---|
spring.jms.servicebus.connection-string | 接続文字列を直接提供する場合は、Azure Service Bus 接続文字列。 |
spring.jms.servicebus.topic-client-id | JMS クライアント ID。 topicJmsListenerContainerFactory bean に対してのみ機能します。 |
spring.jms.servicebus.enabled | Servive Bus JMS 自動構成を有効にするかどうかを示す値。 既定値は true です。 |
spring.jms.servicebus.idle-timeout | メッセージが配信されない場合に Service Bus が接続を維持することをクライアントが予期する時間を示す接続アイドル タイムアウト時間。 既定値は 2m です。 |
spring.jms.servicebus.pricing-tier | Azure Service Bus の価格レベル。 サポートされている値は Premium と Standard です。 プレミアム レベルでは Java Message Service (JMS) 2.0 が使用され、Standard レベルでは JMS 1.1 を使用して Azure Service Bus と対話します。 |
spring.jms.servicebus.listener.reply-pub-sub-domain | 応答先の種類がトピックかどうかを示す値。 topicJmsListenerContainerFactory bean に対してのみ機能します。 |
spring.jms.servicebus.listener.phase | このコンテナーを開始および停止する必要があるフェーズ。 |
spring.jms.servicebus.listener.reply-qos-settings | QosSettings を構成して、応答を送信するときに使用します。 |
spring.jms.servicebus.listener.subscription-durable | サブスクリプションを永続的にするかどうかを示す値。 topicJmsListenerContainerFactory bean に対してのみ機能します。 既定値は true です。 |
spring.jms.servicebus.listener.subscription-shared | サブスクリプションを共有するかどうかを示す値。 topicJmsListenerContainerFactory bean に対してのみ機能します。 |
spring.jms.servicebus.pool.block-if-full | 接続が要求され、プールがいっぱいになったときにブロックするかどうかを示す値。 代わりに false に設定して JMSException をスローします。 |
spring.jms.servicebus.pool.block-if-full-timeout | プールがまだいっぱいの場合に例外をスローするまでのブロック期間。 |
spring.jms.servicebus.pool.enabled | 通常ConnectionFactory の値ではなく、作成JmsPoolConnectionFactory する必要があるかどうかを示す値。 |
spring.jms.servicebus.pool.idle-timeout | 接続プールのアイドル タイムアウト。 |
spring.jms.servicebus.pool.max-connections | プールされた接続の最大数。 |
spring.jms.servicebus.pool.max-sessions-per-connection | プール内の接続あたりのプールされたセッションの最大数。 |
spring.jms.servicebus.pool.time-between-expiration-check | アイドル状態の接続削除スレッドの実行から次回の実行までのスリープ時間。 負の場合、アイドル状態の接続削除スレッドは実行されません。 |
spring.jms.servicebus.pool.use-anonymous-producers | 匿名 MessageProducer インスタンスを 1 つだけ使用するかどうかを示す値。 false 必要なたびに 1 つMessageProducer 作成するように設定します。 |
spring.jms.servicebus.prefetch-policy.all | この Service Bus 名前空間のプリフェッチ オプションのフォールバック値。 既定値は 0 です。 |
spring.jms.servicebus.prefetch-policy.durable-topic-prefetch | 永続的なトピックのプリフェッチ数。 既定値は 0 です。 |
spring.jms.servicebus.prefetch-policy.queue-browser-prefetch | キュー ブラウザーのプリフェッチ数。 既定値は 0 です。 |
spring.jms.servicebus.prefetch-policy.queue-prefetch | キューのプリフェッチ数。 既定値は 0 です。 |
spring.jms.servicebus.prefetch-policy.topic-prefetch | トピックのプリフェッチ数。 既定値は 0 です。 |
Note
Spring JMS の一般的な構成は、短くするために省略されています。
詳細については、Spring JMS ドキュメントを参照してください。
基本的な使用方法
Service Bus の接続文字列を使用する
Spring JMS アプリケーション用の Service Bus に接続する最も簡単な方法は、接続文字列を使用することです。
次のプロパティを追加すると準備できます。
spring:
jms:
servicebus:
connection-string: ${AZURE_SERVICEBUS_CONNECTION_STRING}
pricing-tier: ${PRICING_TIER}
Note
既定ConnectionFactory
では、キャッシュと同様にCachingConnectionFactory
キャッシュMessageProducer
が追加Session
されます。 の接続プーリング機能をアクティブ化する場合は、次に JmsPoolConnectionFactory
設定 spring.jms.servicebus.pool.enabled
します true
。 その他のプール構成オプション (プレフィックスspring.jms.servicebus.pool.
を持つプロパティ) は、[構成] セクションにあります。
サンプル
詳細については、GitHub の azure-spring-boot-samples リポジトリを参照してください。