クラス SimpleMessageListenerContainer
- 実装されたすべてのインターフェース:
ExceptionListenerEE
、Aware
、BeanNameAware
、DisposableBean
、InitializingBean
、Lifecycle
、Phased
、SmartLifecycle
、MessageListenerContainer
MessageConsumer.setMessageListener()
メソッドを使用して、指定されたリスナー用の同時 MessageConsumers を作成するメッセージリスナーコンテナー。これは、メッセージリスナコンテナーの最も単純な形式です。リスナーを呼び出すための一定数の JMS セッションを作成しますが、ランタイムの要求に動的に適応させることはできません。その主な利点は、その低レベルの複雑さと JMS プロバイダーの最小要件です。ServerSessionPool 機能さえ必要ありません。
確認モードとトランザクションオプションの詳細については、AbstractMessageListenerContainer
javadoc を参照してください。このコンテナーは、デフォルトの "AUTO_ACKNOWLEDGE" モードの標準 JMS 動作を公開していることに注意してください。つまり、リスナー実行後の自動配信、ユーザー例外が発生した場合の再配信はありません。
別のスタイルの MessageListener 処理については、メッセージのトランザクション受信(XA トランザクションへの登録)も可能にするループ MessageConsumer.receive()
呼び出しを介して、DefaultMessageListenerContainer
を参照してください。
- 導入:
- 2.0
- 作成者:
- Juergen Hoeller
- 関連事項:
ネストされたクラスのサマリー
クラス org.springframework.jms.listener.AbstractJmsListeningContainer から継承されたネストクラス / インターフェース
AbstractJmsListeningContainer.SharedConnectionNotInitializedException
フィールドサマリー
クラス org.springframework.jms.listener.AbstractJmsListeningContainer から継承されたフィールド
lifecycleMonitor, sharedConnectionMonitor
クラス org.springframework.jms.support.destination.JmsDestinationAccessor から継承されたフィールド
RECEIVE_TIMEOUT_INDEFINITE_WAIT, RECEIVE_TIMEOUT_NO_WAIT
クラス org.springframework.jms.support.JmsAccessor から継承されたフィールド
logger
インターフェース org.springframework.context.SmartLifecycle から継承されたフィールド
DEFAULT_PHASE
コンストラクターのサマリー
メソッドのサマリー
修飾子と型メソッド説明protected MessageConsumerEE
createListenerConsumer
(SessionEE session) 指定された JMS セッションの MessageConsumer を作成し、指定されたリスナーの MessageListener を登録します。protected void
JMS セッションと関連する MessageConsumer の形式で、指定された数の同時コンシューマーを作成します。protected void
登録済みの JMS セッションと関連する MessageConsumers を破棄します。protected void
doStart()
まだ初期化されていない場合、このコンテナーの JMS メッセージコンシューマーを再初期化します。protected void
このコンテナーの JMS セッションと MessageConsumers を初期化します。void
接続に失敗した場合に JMS プロバイダーによって呼び出される JMS ExceptionListener 実装。protected void
prepareSharedConnection
(ConnectionEE connection) このリスナーコンテナーを共有接続の JMS ExceptionListener として登録します。protected void
processMessage
(MessageEE message, SessionEE session) プロバイダーから受信したメッセージを処理します。void
setConcurrency
(StringSE concurrency) "lower-upper" 文字列を介して同時実行制限を指定します。void
setConcurrentConsumers
(int concurrentConsumers) 作成する同時コンシューマーの数を指定します。void
setConnectLazily
(boolean connectLazily) 遅延接続するかどうか、つまりvoid
setRecoverOnException
(boolean recoverOnException) JMSException が報告されるたびに、共有 JMS 接続と関連するセッションおよび MessageConsumers を明示的に回復するかどうかを指定します。void
setTaskExecutor
(ExecutorSE taskExecutor) プロバイダーがメッセージを受信した後、リスナーの実行に使用する Spring TaskExecutor を設定します。protected final boolean
常に共有 JMS 接続を使用します。protected void
このコンテナーの構成を検証します。クラス org.springframework.jms.listener.AbstractMessageListenerContainer から継承されたメソッド
checkMessageListener, commitIfNecessary, createConsumer, createObservation, doExecuteListener, doInvokeListener, doInvokeListener, executeListener, getDefaultSubscriptionName, getDestination, getDestinationDescription, getDestinationName, getDurableSubscriptionName, getErrorHandler, getExceptionListener, getMessageConverter, getMessageListener, getMessageSelector, getObservationRegistry, getReplyQosSettings, getSubscriptionName, handleListenerException, invokeErrorHandler, invokeExceptionListener, invokeListener, isAcceptMessagesWhileStopping, isExposeListenerSession, isPubSubNoLocal, isReplyPubSubDomain, isSessionLocallyTransacted, isSubscriptionDurable, isSubscriptionShared, rollbackIfNecessary, rollbackOnExceptionIfNecessary, setAcceptMessagesWhileStopping, setDestination, setDestinationName, setDurableSubscriptionName, setErrorHandler, setExceptionListener, setExposeListenerSession, setMessageConverter, setMessageListener, setMessageSelector, setObservationRegistry, setPubSubNoLocal, setReplyPubSubDomain, setReplyQosSettings, setSubscriptionDurable, setSubscriptionName, setSubscriptionShared, setupMessageListener
クラス org.springframework.jms.listener.AbstractJmsListeningContainer から継承されたメソッド
afterPropertiesSet, createSharedConnection, destroy, doRescheduleTask, doStop, establishSharedConnection, getBeanName, getClientId, getPausedTaskCount, getPhase, getSharedConnection, initialize, isActive, isAutoStartup, isRunning, logRejectedTask, refreshSharedConnection, releaseSharedConnection, rescheduleTaskIfNecessary, resumePausedTasks, runningAllowed, setAutoStartup, setBeanName, setClientId, setPhase, shutdown, start, startSharedConnection, stop, stopSharedConnection
クラス org.springframework.jms.support.destination.JmsDestinationAccessor から継承されたメソッド
getDestinationResolver, isPubSubDomain, receiveFromConsumer, resolveDestinationName, setDestinationResolver, setPubSubDomain
クラス org.springframework.jms.support.JmsAccessor から継承されたメソッド
convertJmsAccessException, createConnection, createSession, getConnectionFactory, getSessionAcknowledgeMode, isClientAcknowledge, isSessionTransacted, obtainConnectionFactory, setConnectionFactory, setSessionAcknowledgeMode, setSessionAcknowledgeModeName, setSessionTransacted
クラス java.lang.ObjectSE から継承されたメソッド
clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSE
インターフェース org.springframework.jms.listener.MessageListenerContainer から継承されたメソッド
getDestinationResolver, isPubSubDomain
インターフェース org.springframework.context.SmartLifecycle から継承されたメソッド
getPhase, isAutoStartup, stop
コンストラクターの詳細
SimpleMessageListenerContainer
public SimpleMessageListenerContainer()
メソッドの詳細
setConnectLazily
public void setConnectLazily(boolean connectLazily) 遅延接続するかどうか、つまり、このコンテナーの開始段階で、JMS 接続および対応するセッションと MessageConsumers をできるだけ遅く確立するかどうかを指定します。デフォルトは「false」: 早い段階、つまり Bean の初期化段階で接続します。ターゲットブローカーがまだ起動していない可能性が高く、接続を試行しないことを希望する場合は、遅延接続に切り替えるには、このフラグを "true" に設定します。
setRecoverOnException
public void setRecoverOnException(boolean recoverOnException) JMSException が報告されるたびに、共有 JMS 接続と関連するセッションおよび MessageConsumers を明示的に回復するかどうかを指定します。デフォルトは「true」: 接続がリスナーに例外を伝播するたびに、共有接続をリフレッシュし、コンシューマーを再初期化します。既存の接続とコンシューマーハンドルを保持したまま、プロバイダー内の自動回復に依存するには、このフラグを "false" に設定します。
setConcurrency
"lower-upper" 文字列を介して同時実行制限を指定します。"5-10"、または単純な上限文字列、たとえば "10"。このリスナーコンテナーは、スケーリングできないため、常に最大数のコンシューマー
setConcurrentConsumers(int)
を保持します。このプロパティは、
DefaultMessageListenerContainer
との構成互換性のために主にサポートされています。このローカルリスナーコンテナーには、通常、代わりにsetConcurrentConsumers(int)
を使用します。- 次で指定:
- クラス
AbstractMessageListenerContainer
のsetConcurrency
setConcurrentConsumers
public void setConcurrentConsumers(int concurrentConsumers) 作成する同時コンシューマーの数を指定します。デフォルトは 1 です。同時コンシューマーの数を増やすことは、キューから入ってくるメッセージの消費を拡大するために推奨されます。ただし、複数のコンシューマーが登録されると、順序付けの保証は失われます。一般に、少量のキューの場合は 1 つのコンシューマーに固執します。
トピックの同時コンシューマーの数を上げないでください。これにより、同じメッセージが同時に消費されることになり、望ましくありません。
setTaskExecutor
プロバイダーがメッセージを受信した後、リスナーの実行に使用する Spring TaskExecutor を設定します。デフォルトは none です。つまり、JMS プロバイダーの独自の受信スレッドで実行され、リスナーの実行中にプロバイダーの受信エンドポイントをブロックします。
通常、既存のスレッドプールと統合する JMS プロバイダーをブロックするのではなく、別のスレッドでリスナーを実行するために TaskExecutor を指定します。これにより、メッセージを同時に処理している間(受信から切り離されている! )、同時に使用するコンシューマーの数を少なくすることができます。(1)。
注: リスナーの実行に TaskExecutor を指定すると、確認応答のセマンティクスに影響します。その場合、メッセージはリスナーの実行前に常に確認され、基礎となるセッションは次のメッセージを受信するためにすぐに再利用されます。これをトランザクションセッションまたはクライアント確認応答と組み合わせて使用すると、不特定の結果につながります。
注: TaskExecutor を介した同時リスナー実行は、同じ基礎となる Session によって受信されたメッセージの同時処理につながります。結果として、少なくとも
SessionAwareMessageListener
がこのセッションで実際の作業を実行する場合は、この設定をSessionAwareMessageListener
で使用することはお勧めしません。一般的に、標準のMessageListener
EE は正常に機能します。validateConfiguration
protected void validateConfiguration()クラスからコピーされた説明:AbstractJmsListeningContainer
このコンテナーの構成を検証します。デフォルトの実装は空です。サブクラスでオーバーライドされます。
- オーバーライド:
- クラス
AbstractMessageListenerContainer
のvalidateConfiguration
doInitialize
JMS セッションと関連する MessageConsumer の形式で、指定された数の同時コンシューマーを作成します。- 次で指定:
- クラス
AbstractJmsListeningContainer
のdoInitialize
- 例外:
JMSExceptionEE
- 登録に失敗した場合- 関連事項:
doStart
まだ初期化されていない場合、このコンテナーの JMS メッセージコンシューマーを再初期化します。- オーバーライド:
- クラス
AbstractJmsListeningContainer
のdoStart
- 例外:
JMSExceptionEE
- JMS API メソッドによってスローされた場合- 関連事項:
onException
接続に失敗した場合に JMS プロバイダーによって呼び出される JMS ExceptionListener 実装。必要に応じて、このリスナーコンテナーの共有接続とそのセッションおよびコンシューマーを再初期化します。- 次で指定:
- インターフェース
ExceptionListenerEE
のonExceptionEE
- パラメーター:
ex
- 報告された接続例外- 関連事項:
initializeConsumers
このコンテナーの JMS セッションと MessageConsumers を初期化します。- 例外:
JMSExceptionEE
- セットアップが失敗した場合
createListenerConsumer
指定された JMS セッションの MessageConsumer を作成し、指定されたリスナーの MessageListener を登録します。- パラメーター:
session
- 作業する JMS セッション- 戻り値:
- MessageConsumer
- 例外:
JMSExceptionEE
- JMS メソッドによってスローされた場合- 関連事項:
processMessage
プロバイダーから受信したメッセージを処理します。リスナーを実行し、現在の JMS セッションをスレッドバインドリソースとして公開します ( "exposeListenerSession" が "true" の場合)。
- パラメーター:
message
- 受信した JMS メッセージsession
- 操作する JMS セッション- 関連事項:
doShutdown
登録済みの JMS セッションと関連する MessageConsumers を破棄します。- 次で指定:
- クラス
AbstractJmsListeningContainer
のdoShutdown
- 例外:
JMSExceptionEE
- シャットダウンに失敗した場合- 関連事項: