クラス SimpleMessageListenerContainer
- 実装されたすべてのインターフェース:
MessageListenerContainer
、Aware
、BeanNameAware
、DisposableBean
、InitializingBean
、ApplicationContextAware
、ApplicationEventPublisherAware
、Lifecycle
、Phased
、SmartLifecycle
- 導入:
- 1.0
- 作成者:
- Mark Pollack, Mark Fisher, Dave Syer, Gary Russell, Artem Bilan, Alex Panchenko, Mat Jaggard, Yansong Ren, Tim Bourquin, Jeonggi Kim, Java4ye
ネストされたクラスのサマリー
クラス org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer から継承されたネストクラス / インターフェース
AbstractMessageListenerContainer.DefaultExclusiveConsumerLogger, AbstractMessageListenerContainer.JavaLangErrorHandler, AbstractMessageListenerContainer.SharedConnectionNotInitializedException, AbstractMessageListenerContainer.WrappedTransactionException
フィールドサマリー
フィールドクラス org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer から継承されたフィールド
consumersLock, DEFAULT_DEBATCHING_ENABLED, DEFAULT_PREFETCH_COUNT, DEFAULT_RECOVERY_INTERVAL, DEFAULT_SHUTDOWN_TIMEOUT, lifecycleLock, stopNow
クラス org.springframework.amqp.rabbit.connection.RabbitAccessor から継承されたフィールド
logger
インターフェース org.springframework.context.SmartLifecycle から継承されたフィールド
DEFAULT_PHASE
コンストラクターのサマリー
コンストラクターコンストラクター説明setter を介した便利な依存性注入のデフォルトコンストラクター。SimpleMessageListenerContainer
(ConnectionFactory connectionFactory) 接続ファクトリからリスナーコンテナーを作成します (必須)。メソッドのサマリー
修飾子と型メソッド説明protected void
addAndStartConsumers
(int delta) setMaxConcurrentConsumers(int)
によって制限されるデルタコンシューマーまで起動します。void
addQueueNames
(StringSE... queueName) このコンテナーのキューのリストにキューを追加します。void
このコンテナーのキューのリストにキューを追加します。protected void
adjustConsumers
(int deltaArg) デルタに応じてコンシューマーを調整します。protected BlockingQueueConsumer
protected void
このコンテナー内の呼び出し元を登録します。protected void
doStart()
まだ初期化されていない場合、このコンテナーの Rabbit メッセージコンシューマーを再初期化します。int
protected void
handleStartupFailure
(BackOffExecution backOffExecution) protected int
boolean
このコンテナーが消費されたメッセージのバッチを作成できる (および構成されている) 場合は、true を返します。protected void
publishConsumerFailedEvent
(StringSE reason, boolean fatal, ThrowableSE t) boolean
removeQueueNames
(StringSE... queueName) このコンテナーのキューのリストからキューを削除します。boolean
removeQueues
(Queue... queue) このコンテナーのキューのリストからキューを削除します。void
setBatchReceiveTimeout
(long batchReceiveTimeout) バッチメッセージを収集するためのタイムアウトのミリ秒数。void
setBatchSize
(int batchSize) このプロパティにはいくつかの機能があります。void
setConcurrency
(StringSE concurrency) "lower-upper" 文字列を介して同時実行制限を指定します。void
setConcurrentConsumers
(int concurrentConsumers) 作成する同時コンシューマーの数を指定します。final void
setConsecutiveActiveTrigger
(int consecutiveActiveTrigger) maxConcurrentConsumers
がconcurrentConsumers
よりも大きく、maxConcurrentConsumers
に達していない場合、新しいコンシューマーの開始を検討するために、単一のコンシューマーがアクティブだったときの連続サイクル数を指定します。final void
setConsecutiveIdleTrigger
(int consecutiveIdleTrigger) maxConcurrentConsumers
がconcurrentConsumers
より大きく、コンシューマーの数がconcurrentConsumers
を超える場合、データを返さない連続受信試行の回数を指定します。その後、コンシューマーを停止することを検討します。void
setConsumerBatchEnabled
(boolean consumerBatchEnabled) リスナーがサポートしている場合、setBatchSize(int)
に基づいてメッセージのリストを表示するには、true に設定します。void
setConsumerStartTimeout
(long consumerStartTimeout) コンシューマーの起動時に、コンシューマーが起動する前にこの時間 (ミリ秒) が経過すると、エラーログが書き込まれます。考えられる原因の 1 つは、コンテナーの同時実行性をサポートするのにtaskExecutor
のスレッドが不十分である場合です。void
setDeclarationRetries
(int declarationRetries) パッシブキュー宣言失敗後のリトライ回数を設定します。void
setEnforceImmediateAckForManual
(boolean enforceImmediateAckForManual) ImmediateAcknowledgeAmqpException
がスローされたときにAcknowledgeMode.MANUAL
に対してChannel.basicAck(long, boolean)
を強制するには、true
に設定します。final void
setExclusive
(boolean exclusive) 排他的なコンシューマーの場合は true に設定します。true の場合、同時実行数は 1 である必要があります。void
setMaxConcurrentConsumers
(int maxConcurrentConsumers) コンシューマー数の上限を設定します。デフォルトは "concurrentConsumers" です。void
setMissingQueuesFatal
(boolean missingQueuesFatal) 構成されたすべてのキューがブローカーで使用できない場合、この設定は状態が致命的であるかどうかを判別します。void
setQueueNames
(StringSE... queueName) メッセージを受信するキューの名前を設定します。void
setReceiveTimeout
(long receiveTimeout) コンシューマーがデータを待機する時間 (ミリ秒単位)。void
setRetryDeclarationInterval
(long retryDeclarationInterval) 複数のキューを使用する場合、キューのサブセットのみが使用可能な場合の宣言試行の間隔を設定します (ミリ秒)。final void
setStartConsumerMinInterval
(long startConsumerMinInterval) maxConcurrentConsumers
がconcurrentConsumers
よりも大きく、maxConcurrentConsumers
に達していない場合、オンデマンドで新しいコンシューマーを開始するまでの最小時間 (ミリ秒) を指定します。final void
setStopConsumerMinInterval
(long stopConsumerMinInterval) maxConcurrentConsumers
がconcurrentConsumers
より大きく、コンシューマーの数がconcurrentConsumers
を超える場合、アイドル状態のコンシューマーを停止する最小時間 (ミリ秒) を指定します。protected final boolean
常に共有 Rabbit 接続を使用してください。protected void
shutdownAndWaitOrCallback
(RunnableSE callback) toString()
protected void
同時コンシューマーの数と同期して CachingConnectionFactory を構成しない可能性を回避します。クラス org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer から継承されたメソッド
actualInvokeListener, addAfterReceivePostProcessors, afterPropertiesSet, causeChainHasImmediateAcknowledgeAmqpException, checkMessageListener, checkMismatchedQueues, configureAdminIfNeeded, debatch, destroy, doInvokeListener, doInvokeListener, doSetPossibleAuthenticationFailureFatal, doShutdown, doStop, executeListener, executeListenerAndHandleException, getAcknowledgeMode, getAdviceChain, getAfterReceivePostProcessors, getAmqpAdmin, getApplicationEventPublisher, getBatchingStrategy, getConnectionFactory, getConsumeDelay, getConsumerArguments, getConsumerTagStrategy, getExclusiveConsumerExceptionLogger, getFailedDeclarationRetryInterval, getIdleEventInterval, getJavaLangErrorHandler, getLastReceive, getMessageAckListener, getMessageListener, getMessagePropertiesConverter, getPhase, getPrefetchCount, getQueueNames, getQueueNamesAsSet, getQueueNamesToQueues, getRecoveryBackOff, getRoutingConnectionFactory, getRoutingLookupKey, getShutdownTimeout, getTaskExecutor, getTransactionAttribute, getTransactionManager, handleListenerException, initialize, initializeProxy, invokeErrorHandler, invokeListener, isActive, isAlwaysRequeueWithTxManagerRollback, isAsyncReplies, isAutoDeclare, isAutoStartup, isChannelLocallyTransacted, isDeBatchingEnabled, isDefaultRequeueRejected, isExclusive, isExposeListenerChannel, isForceCloseChannel, isForceStop, isGlobalQos, isMismatchedQueuesFatal, isMissingQueuesFatal, isMissingQueuesFatalSet, isNoLocal, isPossibleAuthenticationFailureFatal, isPossibleAuthenticationFailureFatalSet, isRunning, isStatefulRetryFatalWithNullMessageId, lazyLoad, prepareHolderForRollback, publishIdleContainerEvent, publishMissingQueueEvent, redeclareElementsIfNecessary, removeAfterReceivePostProcessor, setAcknowledgeMode, setAdviceChain, setAfterReceivePostProcessors, setAlwaysRequeueWithTxManagerRollback, setAmqpAdmin, setApplicationEventPublisher, setAutoDeclare, setAutoStartup, setBatchingStrategy, setConsumeDelay, setConsumerArguments, setConsumerTagStrategy, setDeBatchingEnabled, setDefaultRequeueRejected, setErrorHandler, setErrorHandlerLoggerName, setExclusiveConsumerExceptionLogger, setExposeListenerChannel, setFailedDeclarationRetryInterval, setForceCloseChannel, setForceStop, setGlobalQos, setIdleEventInterval, setjavaLangErrorHandler, setLookupKeyQualifier, setMessageAckListener, setMessageListener, setMessagePropertiesConverter, setMismatchedQueuesFatal, setNoLocal, setNotRunning, setObservationConvention, setPhase, setPossibleAuthenticationFailureFatal, setPrefetchCount, setQueues, setRecoveryBackOff, setRecoveryInterval, setShutdownTimeout, setStatefulRetryFatalWithNullMessageId, setTaskExecutor, setTransactionAttribute, setTransactionManager, setupMessageListener, shutdown, shutdown, start, stop, stop, updateLastReceive, wrapToListenerExecutionFailedExceptionIfNeeded
クラス org.springframework.amqp.rabbit.listener.ObservableListenerContainer から継承されたメソッド
checkMicrometer, checkObservation, getApplicationContext, getBeanName, getListenerId, getMicrometerHolder, setApplicationContext, setBeanName, setListenerId, setMicrometerEnabled, setMicrometerTags, setObservationEnabled
クラス org.springframework.amqp.rabbit.connection.RabbitAccessor から継承されたメソッド
convertRabbitAccessException, createConnection, getChannel, getConnection, getObservationRegistry, getTransactionalResourceHolder, isChannelTransacted, obtainObservationRegistry, setChannelTransacted, setConnectionFactory
フィールドの詳細
DEFAULT_RECEIVE_TIMEOUT
public static final long DEFAULT_RECEIVE_TIMEOUT- 関連事項:
コンストラクターの詳細
SimpleMessageListenerContainer
public SimpleMessageListenerContainer()setter を介した便利な依存性注入のデフォルトコンストラクター。SimpleMessageListenerContainer
接続ファクトリからリスナーコンテナーを作成します (必須)。- パラメーター:
connectionFactory
-ConnectionFactory
メソッドの詳細
setConcurrentConsumers
public void setConcurrentConsumers(int concurrentConsumers) 作成する同時コンシューマーの数を指定します。デフォルトは 1 です。キューから受信するメッセージの消費をスケーリングするために、同時コンシューマーの数を増やすことをお勧めします。ただし、複数のコンシューマーが登録されると、順序の保証が失われることに注意してください。一般に、少量のキューには 1 つのコンシューマーを使用してください。
maxConcurrentConsumers
を超えることはできません (設定されている場合)。- パラメーター:
concurrentConsumers
- 作成するコンシューマーの最小数。- 関連事項:
setMaxConcurrentConsumers
public void setMaxConcurrentConsumers(int maxConcurrentConsumers) コンシューマー数の上限を設定します。デフォルトは "concurrentConsumers" です。コンシューマーはオンデマンドで追加されます。concurrentConsumers
未満にすることはできません。- パラメーター:
maxConcurrentConsumers
- コンシューマーの最大数。- 関連事項:
setConcurrency
"lower-upper" 文字列を介して同時実行制限を指定します。"5-10"、または単純な上限文字列。"10" (コンシューマーの固定数)。このリスナーコンテナーは常に最小数のコンシューマー(
setConcurrentConsumers(int)
)を保持し、負荷が増加した場合に最大数のコンシューマーsetMaxConcurrentConsumers(int)
に徐々に拡大します。- パラメーター:
concurrency
- 並行性。- 導入:
- 2.0
setExclusive
public final void setExclusive(boolean exclusive) 排他的なコンシューマーの場合は true に設定します。true の場合、同時実行数は 1 である必要があります。- オーバーライド:
- クラス
AbstractMessageListenerContainer
のsetExclusive
- パラメーター:
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 です。
- オーバーライド:
- クラス
AbstractMessageListenerContainer
のsetMissingQueuesFatal
- パラメーター:
missingQueuesFatal
- 設定する missingQueuesFatal- 関連事項:
setQueueNames
クラスからコピーされた説明:AbstractMessageListenerContainer
メッセージを受信するキューの名前を設定します。- 次で指定:
- インターフェース
MessageListenerContainer
のsetQueueNames
- オーバーライド:
- クラス
AbstractMessageListenerContainer
のsetQueueNames
- パラメーター:
queueName
- 目的のキュー名 (null
にすることはできません)
addQueueNames
このコンテナーのキューのリストにキューを追加します。既存のコンシューマーは、プリフェッチされたメッセージを処理した後にキャンセルされ、新しいコンシューマーが作成されます。コンシューマーを再起動するときの問題を回避するために、キューが存在する必要があります。- オーバーライド:
- クラス
AbstractMessageListenerContainer
のaddQueueNames
- パラメーター:
queueName
- 追加するキュー。
removeQueueNames
このコンテナーのキューのリストからキューを削除します。既存のコンシューマーは、プリフェッチされたメッセージを処理した後にキャンセルされ、新しいコンシューマーが作成されます。少なくとも 1 つのキューが残っている必要があります。- オーバーライド:
- クラス
AbstractMessageListenerContainer
のremoveQueueNames
- パラメーター:
queueName
- 削除するキュー。- 戻り値:
- ターゲット
queueNames
リストでの削除のブール結果。
addQueues
このコンテナーのキューのリストにキューを追加します。既存のコンシューマーは、プリフェッチされたメッセージを処理した後にキャンセルされ、新しいコンシューマーが作成されます。コンシューマーを再起動するときの問題を回避するために、キューが存在する必要があります。- オーバーライド:
- クラス
AbstractMessageListenerContainer
のaddQueues
- パラメーター:
queue
- 追加するキュー。
removeQueues
このコンテナーのキューのリストからキューを削除します。既存のコンシューマーは、プリフェッチされたメッセージを処理した後にキャンセルされ、新しいコンシューマーが作成されます。少なくとも 1 つのキューが残っている必要があります。- オーバーライド:
- クラス
AbstractMessageListenerContainer
のremoveQueues
- パラメーター:
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 を構成しない可能性を回避します。- オーバーライド:
- クラス
AbstractMessageListenerContainer
のvalidateConfiguration
doInitialize
protected void doInitialize()クラスからコピーされた説明:AbstractMessageListenerContainer
このコンテナー内の呼び出し元を登録します。サブクラスは、特定の呼び出し元管理プロセスのためにこのメソッドを実装する必要があります。
- 次で指定:
- クラス
AbstractMessageListenerContainer
のdoInitialize
getActiveConsumerCount
doStart
protected void doStart()まだ初期化されていない場合、このコンテナーの Rabbit メッセージコンシューマーを再初期化します。次に、各コンシューマーをこのコンテナーのタスクエグゼキューターに送信します。- オーバーライド:
- クラス
AbstractMessageListenerContainer
のdoStart
shutdownAndWaitOrCallback
- オーバーライド:
- クラス
AbstractMessageListenerContainer
のshutdownAndWaitOrCallback
initializeConsumers
protected int initializeConsumers()adjustConsumers
protected void adjustConsumers(int deltaArg) デルタに応じてコンシューマーを調整します。- パラメーター:
deltaArg
- 負の値は増加し、正の値は減少します。- 導入:
- 1.7.8
addAndStartConsumers
protected void addAndStartConsumers(int delta) setMaxConcurrentConsumers(int)
によって制限されるデルタコンシューマーまで起動します。- パラメーター:
delta
- 追加するコンシューマー。
createBlockingQueueConsumer
handleStartupFailure
publishConsumerFailedEvent
- オーバーライド:
- クラス
AbstractMessageListenerContainer
のpublishConsumerFailedEvent
toString