クラス SimpleMessageListenerContainer

実装されたすべてのインターフェース:
MessageListenerContainerAwareBeanNameAwareDisposableBeanInitializingBeanApplicationContextAwareApplicationEventPublisherAwareLifecyclePhasedSmartLifecycle

public class SimpleMessageListenerContainer extends AbstractMessageListenerContainer
導入:
1.0
作成者:
Mark Pollack, Mark Fisher, Dave Syer, Gary Russell, Artem Bilan, Alex Panchenko, Mat Jaggard, Yansong Ren, Tim Bourquin, Jeonggi Kim, Java4ye
  • フィールドの詳細

  • コンストラクターの詳細

    • SimpleMessageListenerContainer

      public SimpleMessageListenerContainer()
      setter を介した便利な依存性注入のデフォルトコンストラクター。
    • SimpleMessageListenerContainer

      public SimpleMessageListenerContainer(ConnectionFactory connectionFactory)
      接続ファクトリからリスナーコンテナーを作成します (必須)。
      パラメーター:
      connectionFactory - ConnectionFactory
  • メソッドの詳細

    • setConcurrentConsumers

      public void setConcurrentConsumers(int concurrentConsumers)
      作成する同時コンシューマーの数を指定します。デフォルトは 1 です。

      キューから受信するメッセージの消費をスケーリングするために、同時コンシューマーの数を増やすことをお勧めします。ただし、複数のコンシューマーが登録されると、順序の保証が失われることに注意してください。一般に、少量のキューには 1 つのコンシューマーを使用してください。maxConcurrentConsumers を超えることはできません (設定されている場合)。

      パラメーター:
      concurrentConsumers - 作成するコンシューマーの最小数。
      関連事項:
    • setMaxConcurrentConsumers

      public void setMaxConcurrentConsumers(int maxConcurrentConsumers)
      コンシューマー数の上限を設定します。デフォルトは "concurrentConsumers" です。コンシューマーはオンデマンドで追加されます。concurrentConsumers 未満にすることはできません。
      パラメーター:
      maxConcurrentConsumers - コンシューマーの最大数。
      関連事項:
    • setConcurrency

      public void setConcurrency(StringSE concurrency)
      "lower-upper" 文字列を介して同時実行制限を指定します。"5-10"、または単純な上限文字列。"10" (コンシューマーの固定数)。

      このリスナーコンテナーは常に最小数のコンシューマー(setConcurrentConsumers(int))を保持し、負荷が増加した場合に最大数のコンシューマー setMaxConcurrentConsumers(int) に徐々に拡大します。

      パラメーター:
      concurrency - 並行性。
      導入:
      2.0
    • setExclusive

      public final void setExclusive(boolean exclusive)
      排他的なコンシューマーの場合は true に設定します。true の場合、同時実行数は 1 である必要があります。
      オーバーライド:
      クラス AbstractMessageListenerContainersetExclusive 
      パラメーター:
      exclusive - 排他的なコンシューマーに当てはまります。
    • setStartConsumerMinInterval

      public final void setStartConsumerMinInterval(long startConsumerMinInterval)
      maxConcurrentConsumers が concurrentConsumers よりも大きく、maxConcurrentConsumers に達していない場合、オンデマンドで新しいコンシューマーを開始するまでの最小時間 (ミリ秒) を指定します。デフォルトは 10000 (10 秒です)。
      パラメーター:
      startConsumerMinInterval - 新しいコンシューマーが起動する最小間隔。
      関連事項:
    • setStopConsumerMinInterval

      public final void setStopConsumerMinInterval(long stopConsumerMinInterval)
      maxConcurrentConsumers が concurrentConsumers より大きく、コンシューマーの数が concurrentConsumers を超える場合、アイドル状態のコンシューマーを停止する最小時間 (ミリ秒) を指定します。デフォルトは 60000 (1 分です)。
      パラメーター:
      stopConsumerMinInterval - コンシューマーが停止する最小間隔。
      関連事項:
    • setConsecutiveActiveTrigger

      public final void setConsecutiveActiveTrigger(int consecutiveActiveTrigger)
      maxConcurrentConsumers が concurrentConsumers よりも大きく、maxConcurrentConsumers に達していない場合、新しいコンシューマーの開始を検討するために、単一のコンシューマーがアクティブだったときの連続サイクル数を指定します。コンシューマーが 1 サイクルアイドル状態になると、カウンターがリセットされます。これは batchSize の影響を受けます。デフォルトは 10 連続メッセージです。
      パラメーター:
      consecutiveActiveTrigger - 新しいコンシューマーをトリガーする連続受信の数。
      関連事項:
    • setConsecutiveIdleTrigger

      public final void setConsecutiveIdleTrigger(int consecutiveIdleTrigger)
      maxConcurrentConsumers が concurrentConsumers より大きく、コンシューマーの数が concurrentConsumers を超える場合、データを返さない連続受信試行の回数を指定します。その後、コンシューマーを停止することを検討します。アイドル時間は実質的に receiveTimeout * batchSize * この値になります。これは、コンシューマースレッドがメッセージを最大 receiveTimeout から batchSize まで待機するためです。デフォルトは 10 回の連続アイドルです。
      パラメーター:
      consecutiveIdleTrigger - コンシューマーの停止をトリガーする連続タイムアウトの数。
      関連事項:
    • setReceiveTimeout

      public void setReceiveTimeout(long receiveTimeout)
      コンシューマーがデータを待機する時間 (ミリ秒単位)。デフォルトは 1000 (1 秒)。
      パラメーター:
      receiveTimeout - タイムアウト。
      関連事項:
    • setBatchReceiveTimeout

      public void setBatchReceiveTimeout(long batchReceiveTimeout)
      バッチメッセージを収集するためのタイムアウトのミリ秒数。これにより、batchSize がいっぱいになるまでの待ち時間が制限されます。デフォルトは 0 (タイムアウトなし) です。
      パラメーター:
      batchReceiveTimeout - バッチメッセージを収集するためのタイムアウト。
      導入:
      3.1.2
      関連事項:
    • setBatchSize

      public void setBatchSize(int batchSize)
      このプロパティにはいくつかの機能があります。

      チャネルが処理されると、1 つのトランザクションで処理するメッセージの数が決定されます。the prefetch count 以下である必要があります。

      また、AcknowledgeMode.AUTO を使用する場合に ACK が送信される頻度にも影響します (BatchSize ごとに 1 つの ACK)。

      最後に、setConsumerBatchEnabled(boolean) が true の場合、setReceiveTimeout(long) 内に十分なメッセージが到着する限り、バッチに含めるレコードの数を決定します。

      重要バッチサイズは、受信した物理メッセージの数を表します。AbstractMessageListenerContainer.setDeBatchingEnabled(boolean) が true で、メッセージがプロデューサーによって作成されたバッチである場合、リスナーによって受信される実際のメッセージ数は、このバッチサイズよりも大きくなります。

      デフォルトは 1 です。

      パラメーター:
      batchSize - バッチサイズ
      導入:
      2.2
      関連事項:
    • setConsumerBatchEnabled

      public void setConsumerBatchEnabled(boolean consumerBatchEnabled)
      リスナーがサポートしている場合、setBatchSize(int) に基づいてメッセージのリストを表示するには、true に設定します。これにより、deBatchingEnabled も true に強制されます。
      パラメーター:
      consumerBatchEnabled - コンテナーにメッセージバッチを作成する場合は true。
      導入:
      2.2
      関連事項:
    • isConsumerBatchEnabled

      public boolean isConsumerBatchEnabled()
      インターフェースからコピーされた説明: MessageListenerContainer
      このコンテナーが消費されたメッセージのバッチを作成できる (および構成されている) 場合は、true を返します。
      戻り値:
      有効な場合は true。
    • setMissingQueuesFatal

      public void setMissingQueuesFatal(boolean missingQueuesFatal)
      構成されたすべてのキューがブローカーで使用できない場合、この設定は状態が致命的であるかどうかを判別します。true の場合、起動時にキューが欠落していると、コンテキスト refresh() は失敗します。

      false の場合、条件は致命的とは見なされず、コンテナーは引き続きコンシューマーを開始しようとします。

      true の場合、コンテナーの実行中にキューが削除されると、コンテナーは停止します。

      このコンテナーのデフォルトは true です。

      オーバーライド:
      クラス AbstractMessageListenerContainersetMissingQueuesFatal 
      パラメーター:
      missingQueuesFatal - 設定する missingQueuesFatal
      関連事項:
    • setQueueNames

      public void setQueueNames(StringSE... queueName)
      クラスからコピーされた説明: AbstractMessageListenerContainer
      メッセージを受信するキューの名前を設定します。
      次で指定:
      インターフェース MessageListenerContainersetQueueNames 
      オーバーライド:
      クラス AbstractMessageListenerContainersetQueueNames 
      パラメーター:
      queueName - 目的のキュー名 (null にすることはできません)
    • addQueueNames

      public void addQueueNames(StringSE... queueName)
      このコンテナーのキューのリストにキューを追加します。既存のコンシューマーは、プリフェッチされたメッセージを処理した後にキャンセルされ、新しいコンシューマーが作成されます。コンシューマーを再起動するときの問題を回避するために、キューが存在する必要があります。
      オーバーライド:
      クラス AbstractMessageListenerContaineraddQueueNames 
      パラメーター:
      queueName - 追加するキュー。
    • removeQueueNames

      public boolean removeQueueNames(StringSE... queueName)
      このコンテナーのキューのリストからキューを削除します。既存のコンシューマーは、プリフェッチされたメッセージを処理した後にキャンセルされ、新しいコンシューマーが作成されます。少なくとも 1 つのキューが残っている必要があります。
      オーバーライド:
      クラス AbstractMessageListenerContainerremoveQueueNames 
      パラメーター:
      queueName - 削除するキュー。
      戻り値:
      ターゲット queueNames リストでの削除のブール結果。
    • addQueues

      public void addQueues(Queue... queue)
      このコンテナーのキューのリストにキューを追加します。既存のコンシューマーは、プリフェッチされたメッセージを処理した後にキャンセルされ、新しいコンシューマーが作成されます。コンシューマーを再起動するときの問題を回避するために、キューが存在する必要があります。
      オーバーライド:
      クラス AbstractMessageListenerContaineraddQueues 
      パラメーター:
      queue - 追加するキュー。
    • removeQueues

      public boolean removeQueues(Queue... queue)
      このコンテナーのキューのリストからキューを削除します。既存のコンシューマーは、プリフェッチされたメッセージを処理した後にキャンセルされ、新しいコンシューマーが作成されます。少なくとも 1 つのキューが残っている必要があります。
      オーバーライド:
      クラス AbstractMessageListenerContainerremoveQueues 
      パラメーター:
      queue - 削除するキュー。
      戻り値:
      ターゲット queueNames リストでの削除のブール結果。
    • setDeclarationRetries

      public void setDeclarationRetries(int declarationRetries)
      パッシブキュー宣言失敗後のリトライ回数を設定します。
      パラメーター:
      declarationRetries - 再試行回数。デフォルトは 3 です。
      導入:
      1.3.9
      関連事項:
    • setRetryDeclarationInterval

      public void setRetryDeclarationInterval(long retryDeclarationInterval)
      複数のキューを使用する場合、キューのサブセットのみが使用可能な場合の宣言試行の間隔を設定します (ミリ秒)。
      パラメーター:
      retryDeclarationInterval - 間隔、デフォルトは 60000。
      導入:
      1.3.9
    • setConsumerStartTimeout

      public void setConsumerStartTimeout(long consumerStartTimeout)
      コンシューマーの起動時に、コンシューマーが起動する前にこの時間 (ミリ秒) が経過すると、エラーログが書き込まれます。考えられる原因の 1 つは、コンテナーの同時実行性をサポートするのに taskExecutor のスレッドが不十分である場合です。デフォルトは 60000 です。
      パラメーター:
      consumerStartTimeout - タイムアウト。
      導入:
      1.7.5
    • setEnforceImmediateAckForManual

      public void setEnforceImmediateAckForManual(boolean enforceImmediateAckForManual)
      ImmediateAcknowledgeAmqpException がスローされたときに AcknowledgeMode.MANUAL に対して Channel.basicAck(long, boolean) を強制するには、true に設定します。これは、現在のマイナーバージョンの動作を壊さないための暫定的な解決策である可能性があります。
      パラメーター:
      enforceImmediateAckForManual - ImmediateAcknowledgeAmqpException の MANUAL モードのメッセージを確認するためのフラグ
      導入:
      3.1.2
    • validateConfiguration

      protected void validateConfiguration()
      同時コンシューマーの数と同期して CachingConnectionFactory を構成しない可能性を回避します。
      オーバーライド:
      クラス AbstractMessageListenerContainervalidateConfiguration 
    • sharedConnectionEnabled

      protected final boolean sharedConnectionEnabled()
      常に共有 Rabbit 接続を使用してください。
      戻り値:
      true
    • doInitialize

      protected void doInitialize()
      クラスからコピーされた説明: AbstractMessageListenerContainer
      このコンテナー内の呼び出し元を登録します。

      サブクラスは、特定の呼び出し元管理プロセスのためにこのメソッドを実装する必要があります。

      次で指定:
      クラス AbstractMessageListenerContainerdoInitialize 
    • getActiveConsumerCount

      @ManagedMetric(metricType=GAUGE) public int getActiveConsumerCount()
    • doStart

      protected void doStart()
      まだ初期化されていない場合、このコンテナーの Rabbit メッセージコンシューマーを再初期化します。次に、各コンシューマーをこのコンテナーのタスクエグゼキューターに送信します。
      オーバーライド:
      クラス AbstractMessageListenerContainerdoStart 
    • shutdownAndWaitOrCallback

      protected void shutdownAndWaitOrCallback(@Nullable RunnableSE callback)
      オーバーライド:
      クラス AbstractMessageListenerContainershutdownAndWaitOrCallback 
    • initializeConsumers

      protected int initializeConsumers()
    • adjustConsumers

      protected void adjustConsumers(int deltaArg)
      デルタに応じてコンシューマーを調整します。
      パラメーター:
      deltaArg - 負の値は増加し、正の値は減少します。
      導入:
      1.7.8
    • addAndStartConsumers

      protected void addAndStartConsumers(int delta)
      setMaxConcurrentConsumers(int) によって制限されるデルタコンシューマーまで起動します。
      パラメーター:
      delta - 追加するコンシューマー。
    • createBlockingQueueConsumer

      protected BlockingQueueConsumer createBlockingQueueConsumer()
    • handleStartupFailure

      protected void handleStartupFailure(BackOffExecution backOffExecution)
    • publishConsumerFailedEvent

      protected void publishConsumerFailedEvent(StringSE reason, boolean fatal, @Nullable ThrowableSE t)
      オーバーライド:
      クラス AbstractMessageListenerContainerpublishConsumerFailedEvent 
    • toString

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