クラス CachingConnectionFactory

java.lang.ObjectSE
org.springframework.amqp.rabbit.connection.AbstractConnectionFactory
org.springframework.amqp.rabbit.connection.CachingConnectionFactory
実装されたすべてのインターフェース:
com.rabbitmq.client.ShutdownListenerEventListenerSEConnectionFactoryAwareBeanNameAwareDisposableBeanInitializingBeanApplicationContextAwareApplicationEventPublisherAwareApplicationListener<ContextClosedEvent>LifecyclePhasedSmartLifecycle

@ManagedResource public class CachingConnectionFactory extends AbstractConnectionFactory implements InitializingBean, com.rabbitmq.client.ShutdownListener, SmartLifecycle
(キャッシュモードが CachingConnectionFactory.CacheMode.CHANNEL (デフォルト) の場合、すべての createConnection() 呼び出しから同じ接続を返し、Connection.close() への呼び出しを無視して Channel をキャッシュする ConnectionFactory 実装。

デフォルトでは、1 つのチャネルのみがキャッシュされ、さらにリクエストされたチャネルが作成され、オンデマンドで破棄されます。並行性の高い環境の場合は、"channelCacheSize" value を上げることを検討してください。

キャッシュモードが CachingConnectionFactory.CacheMode.CONNECTION の場合、各 createConnection() に対して新しい (またはキャッシュされた) 接続が使用されます。接続は "connectionCacheSize" value に従ってキャッシュされます。このモードでは、接続とチャネルの両方がキャッシュされます。

CachingConnectionFactory.CacheMode.CONNECTION は、キューなどを自動宣言する Rabbit 管理者と互換性がありません。

注: この ConnectionFactory では、接続から取得したすべてのチャネルを明示的に閉じる必要があります。いずれにせよ、これはネイティブ Rabbit アクセスコードに対する通常の推奨事項です。ただし、この ConnectionFactory では、実際にチャネルを再利用できるようにするために、その使用が必須です。Channel.close() は、余裕がある場合はチャネルをキャッシュに戻し、余裕がない場合はチャネルを物理的に閉じます。

作成者:
Mark Pollack, Mark Fisher, Dave Syer, Gary Russell, Artem Bilan, Steve Powell, Will Droste, Leonardo Ferreira
  • コンストラクターの詳細

    • CachingConnectionFactory

      public CachingConnectionFactory()
      ホスト名を InetAddress.getLocalHost() から返される値、または getLocalHost() が例外をスローする場合は "localhost" に初期化して、新しい CachingConnectionFactory を作成します。
    • CachingConnectionFactory

      public CachingConnectionFactory(@Nullable StringSE hostname)
      ホスト名を指定して新しい CachingConnectionFactory を作成します。
      パラメーター:
      hostname - 接続するホスト名
    • CachingConnectionFactory

      public CachingConnectionFactory(int port)
      InetAddress.getLocalHost() から返されたホスト名のポートを指定して新しい CachingConnectionFactory を作成するか、getLocalHost() が例外をスローする場合は "localhost" を作成します。
      パラメーター:
      port - ポート番号
    • CachingConnectionFactory

      public CachingConnectionFactory(@Nullable StringSE hostNameArg, int port)
      ホスト名とポートを指定して、新しい CachingConnectionFactory を作成します。
      パラメーター:
      hostNameArg - 接続するホスト名
      port - ポート番号
    • CachingConnectionFactory

      public CachingConnectionFactory(URISE uri)
      URISE を指定して新しい CachingConnectionFactory を作成します。
      パラメーター:
      uri - 接続を構成する amqp uri
      導入:
      1.5
    • CachingConnectionFactory

      public CachingConnectionFactory(com.rabbitmq.client.ConnectionFactory rabbitConnectionFactory)
      指定されたターゲット ConnectionFactory の新しい CachingConnectionFactory を作成します。
      パラメーター:
      rabbitConnectionFactory - ターゲット ConnectionFactory
  • メソッドの詳細

    • setPublisherConnectionFactory

      public void setPublisherConnectionFactory(@Nullable AbstractConnectionFactory publisherConnectionFactory)
      クラスからコピーされた説明: AbstractConnectionFactory
      カスタムパブリッシャー接続ファクトリを設定します。型はこのファクトリと同じである必要はありません。
      オーバーライド:
      クラス AbstractConnectionFactorysetPublisherConnectionFactory 
      パラメーター:
      publisherConnectionFactory - ファクトリ。
    • setChannelCacheSize

      public void setChannelCacheSize(int sessionCacheSize)
      キャッシュで維持するチャネルの数。デフォルトでは、チャネルはオンデマンドで (無制限に) 割り当てられ、これは最大キャッシュサイズを表します。利用可能なチャネルを制限するには、setChannelCheckoutTimeout(long) を参照してください。
      パラメーター:
      sessionCacheSize - チャネルのキャッシュサイズ。
      関連事項:
    • getChannelCacheSize

      public int getChannelCacheSize()
    • getCacheMode

      public CachingConnectionFactory.CacheMode getCacheMode()
    • setCacheMode

      public void setCacheMode(CachingConnectionFactory.CacheMode cacheMode)
    • getConnectionCacheSize

      public int getConnectionCacheSize()
    • setConnectionCacheSize

      public void setConnectionCacheSize(int connectionCacheSize)
    • setConnectionLimit

      public void setConnectionLimit(int connectionLimit)
      キャッシュモード CONNECTION 使用時の接続制限を設定します。制限に達し、アイドル状態の接続がなくなると、channelCheckoutTimeLimit を使用して、接続がアイドル状態になるのを待ちます。
      パラメーター:
      connectionLimit - 限界。
      導入:
      1.5.5
    • isPublisherConfirms

      public boolean isPublisherConfirms()
      インターフェースからコピーされた説明: ConnectionFactory
      パブリッシャーの確認が有効になっている場合は true を返します。
      次で指定:
      インターフェース ConnectionFactoryisPublisherConfirms 
      戻り値:
      パブリッシャー確認。
    • isPublisherReturns

      public boolean isPublisherReturns()
      インターフェースからコピーされた説明: ConnectionFactory
      パブリッシャーの return が有効になっている場合は true を返します。
      次で指定:
      インターフェース ConnectionFactoryisPublisherReturns 
      戻り値:
      パブリッシャーが return します。
    • setPublisherReturns

      public void setPublisherReturns(boolean publisherReturns)
    • isSimplePublisherConfirms

      public boolean isSimplePublisherConfirms()
      インターフェースからコピーされた説明: ConnectionFactory
      シンプルな発行者の確認が有効になっている場合は true を返します。
      次で指定:
      インターフェース ConnectionFactoryisSimplePublisherConfirms 
      戻り値:
      simplePublisherConfirms
    • setPublisherConfirmType

      public void setPublisherConfirmType(CachingConnectionFactory.ConfirmType confirmType)
      使用する確認型を設定します。デフォルト CachingConnectionFactory.ConfirmType.NONE
      パラメーター:
      confirmType - 確認型。
      導入:
      2.2
    • setChannelCheckoutTimeout

      public void setChannelCheckoutTimeout(long channelCheckoutTimeout)
      チャネルチェックアウトタイムアウトを設定します。0 より大きい場合、channelCacheSize が単純なキャッシュサイズではなく、接続ごとに使用可能なチャネルの総数になるという点で、チャネル制限が有効になります。channelCacheSize を変更しても、既存の接続の制限には影響しないことに注意してください。destroy() を呼び出して、新しい制限で新しい接続を作成します。

      1.5.5 以降、キャッシュモードが CONNECTION の場合の接続の取得にも適用されます。

      パラメーター:
      channelCheckoutTimeout - ミリ秒単位のタイムアウト。デフォルト 0 (チャネル制限は無効)。
      導入:
      1.4.2
      関連事項:
    • setPublisherChannelFactory

      public void setPublisherChannelFactory(PublisherCallbackChannelFactory publisherChannelFactory)
      PublisherCallbackChannel インスタンスの作成に使用するファクトリを設定します。
      パラメーター:
      publisherChannelFactory - ファクトリ。
      導入:
      2.1.6
    • getPhase

      public int getPhase()
      次で指定:
      インターフェース PhasedgetPhase 
      次で指定:
      インターフェース SmartLifecyclegetPhase 
    • afterPropertiesSet

      public void afterPropertiesSet()
      次で指定:
      インターフェース InitializingBeanafterPropertiesSet 
    • start

      public void start()
      次で指定:
      インターフェース Lifecyclestart 
    • stop

      public void stop()
      次で指定:
      インターフェース Lifecyclestop 
    • isRunning

      public boolean isRunning()
      次で指定:
      インターフェース LifecycleisRunning 
    • setConnectionListeners

      public void setConnectionListeners(ListSE<? extends ConnectionListener> listeners)
      オーバーライド:
      クラス AbstractConnectionFactorysetConnectionListeners 
    • addConnectionListener

      public void addConnectionListener(ConnectionListener listener)
      次で指定:
      インターフェース ConnectionFactoryaddConnectionListener 
      オーバーライド:
      クラス AbstractConnectionFactoryaddConnectionListener 
    • createConnection

      public final Connection createConnection() throws AmqpException
      次で指定:
      インターフェース ConnectionFactorycreateConnection 
      例外:
      AmqpException
    • destroy

      public final void destroy()
      基になる共有接続を閉じます。アプリケーションの実行中に resetConnection() を使用して接続を閉じます。

      この Bean は DisposableBean を実装しているため、Bean ファクトリは、キャッシュされたシングルトンの破棄時にこれを自動的に呼び出します。

      コンテキストが閉じられた後に呼び出された場合、接続ファクトリは接続をサーバー化できなくなります。

      次で指定:
      インターフェース DisposableBeandestroy 
      オーバーライド:
      クラス AbstractConnectionFactorydestroy 
    • resetConnection

      public void resetConnection()
      接続を閉じます。これは、進行中の操作に影響を与えます。このメソッドが戻った後、必要に応じて新しい接続が作成されます。これは、セカンダリブローカにフェイルオーバーした後、プライマリブローカへの再接続を強制するために使用される場合があります。
      次で指定:
      インターフェース ConnectionFactoryresetConnection 
    • reset

      protected void reset(DequeSE<ChannelProxy> channels, DequeSE<ChannelProxy> txChannels, MapSE<com.rabbitmq.client.Channel,ChannelProxy> channelsAwaitingAcks)
    • closeAndClear

      protected void closeAndClear(CollectionSE<ChannelProxy> theChannels)
    • closeChannels

      protected void closeChannels(CollectionSE<ChannelProxy> theChannels)
    • getCacheProperties

      @ManagedAttribute public PropertiesSE getCacheProperties()
    • getPublisherConnectionFactoryCacheProperties

      @ManagedAttribute public PropertiesSE getPublisherConnectionFactoryCacheProperties()
      基になるパブリッシャーサブファクトリからキャッシュプロパティを返します。
      戻り値:
      プロパティ。
      導入:
      2.0.2
    • getChannelsExecutor

      protected ExecutorServiceSE getChannelsExecutor()
      ターゲットチャネルに使用されるエグゼキュータサービスを決定します。
      戻り値:
      それ以外の場合は、デフォルトのサービスが作成されて返されます。
      導入:
      1.7.9
    • toString

      public StringSE toString()
      オーバーライド:
      クラス AbstractConnectionFactorytoString