次の方法で共有


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 リポジトリを参照してください。