クラス AbstractMessageListenerContainer
- 実装されているすべてのインターフェース:
Aware、BeanNameAware、DisposableBean、InitializingBean、Lifecycle、Phased、SmartLifecycle、MessageListenerContainer
MessageListenerEE または Spring の SessionAwareMessageListener をホストできます。 通常、すべてのリスナーが登録されることになっている単一の JMS ConnectionEE を保持します。これは、リスナーセッションを管理する標準の JMS 方法です。あるいは、Jakarta EE スタイルの XA 対応 JMS メッセージングのために、リスナーごとの新しい接続で使用することもできます。実際の登録プロセスは具象サブクラス次第です。
注 : このメッセージリスナーコンテナーのデフォルトの動作では、メッセージリスナーによってスローされた例外が JMS プロバイダーに伝播されることはありません。代わりに、そのような例外は WARN レベルでログに記録されます。これは、付随の JMS プロバイダーの観点からは、そのようなリスナーが失敗することは決してないことを意味します。ただし、エラー処理が必要な場合は、ErrorHandler 戦略の実装を setErrorHandler(ErrorHandler) メソッドに提供できます。JMSException は、ExceptionListenerEE が指定されている場合、それに加えて (ただしその後に) ErrorHandler に渡されることに注意してください。
リスナーコンテナーは、次のメッセージ確認オプションを提供します。
- "sessionAcknowledgeMode" を "AUTO_ACKNOWLEDGE" に設定(デフォルト): このモードはコンテナーに依存します。
DefaultMessageListenerContainerの場合、リスナー実行前に自動メッセージ確認が行われ、例外が発生した場合の再配信はなく、他のリスナー実行の中断が発生した場合の再配信もありません。SimpleMessageListenerContainerの場合、リスナー実行後に自動メッセージ確認が行われ、ユーザー例外がスローされた場合の再配信はありませんが、リスナー実行中に JVM が停止した場合は再配信される可能性があります。あらゆるコンテナーバリアントで一貫して再配信を行うには、"CLIENT_ACKNOWLEDGE" モードを検討するか、代わりに "sessionTransacted" を "true" に設定することを推奨します。 - "sessionAcknowledgeMode" が "DUPS_OK_ACKNOWLEDGE" に設定されました: リスナー実行中 (
DefaultMessageListenerContainer) または直後 (SimpleMessageListenerContainer) の遅延メッセージ確認。ユーザー例外がスローされた場合は再配信されませんが、リスナー実行中に JVM が停止した場合は再配信される可能性があります。どのコンテナーバリアントでも一貫して再配信を行うには、"CLIENT_ACKNOWLEDGE" モードを検討するか、代わりに "sessionTransacted" を "true" に設定することをお勧めします。 - "sessionAcknowledgeMode" を "CLIENT_ACKNOWLEDGE" に設定: リスナーが正常に実行された後の自動メッセージ確認。ユーザー例外がスローされた場合、および他のリスナーの実行が中断された場合(JVM の停止など)の場合のベストエフォートの再配信。
- "sessionTransacted" を "true" に設定: リスナーが正常に実行された後のトランザクションの確認。ユーザー例外がスローされた場合、および他のリスナー実行が中断した場合(JVM が停止した場合など)の場合は、 再配信が保証されます。
重複メッセージ処理の問題には 2 つの解決策があります。
- ビジネスエンティティの存在チェックまたはプロトコルテーブルチェックの形式で、 重複メッセージ検出をリスナーに追加します。これは通常、受信メッセージに JMSRedelivered フラグが設定されている場合にのみ実行する必要があります (それ以外の場合は、そのまま処理します)。"sessionTransacted" を "true" に設定すると、JVM が最も不運な時点で停止した場合にのみ重複メッセージが表示されることに注意してください (つまり、ビジネスロジックの実行後、JMS 部分がコミットされる前)。重複メッセージ検出は、コーナーケースをカバーするためだけに存在します。
- または、 処理全体を XA トランザクションでラップして、JMS メッセージの受信とメッセージリスナーでのビジネスロジックの実行 (データベース操作などを含む) をカバーします。これは、外部の "transactionManager" (通常は
JtaTransactionManagerで、対応する XA 対応 JMSConnectionFactoryEE が "connectionFactory" として渡されます) を指定することによって、DefaultMessageListenerContainerでのみサポートされます。
推奨:
- 一般的には、"sessionTransacted" を "true" に設定し、通常はリスナー実装によってトリガーされるローカルデータベーストランザクションと組み合わせて、Spring の標準トランザクション機能を使用することが推奨されます。これは、Tomcat またはスタンドアロン環境で適切に機能し、多くの場合、カスタム重複メッセージ検出と組み合わせて使用されます (同じメッセージを 2 回処理することが許容されない場合)。
- あるいは、完全に XA 対応の JMS プロバイダーの場合は、
JtaTransactionManagerを "transactionManager" として指定します。これは、通常は Jakarta EE サーバーで実行する場合ですが、JTA トランザクションマネージャーが存在する他の環境でも当てはまります。これにより、追加の実行時処理オーバーヘッドを犠牲にして、カスタム重複メッセージチェックなしで完全な「正確に 1 回」の保証が得られます。
トランザクションを外部で管理する必要がない場合は、JmsTransactionManager よりも "sessionTransacted" フラグを強く推奨します。JTA を使用している場合、またはカスタムの外部トランザクション構成と同期する必要がある場合にのみ、トランザクションマネージャーを設定してください。
- 導入:
- 2.0
- 作成者:
- Juergen Hoeller, Stephane Nicoll, Brian Clozel
- 関連事項:
ネストされたクラスの要約
クラス 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 voidcheckMessageListener(ObjectSE messageListener) 指定されたメッセージリスナーを確認し、サポートされているリスナー型に対応していない場合は例外をスローします。protected voidcommitIfNecessary(SessionEE session, MessageEE message) 必要に応じて、コミットまたはメッセージ確認を実行します。protected MessageConsumerEEcreateConsumer(SessionEE session, DestinationEE destination) 指定されたセッションと宛先の JMS MessageConsumer を作成します。protected io.micrometer.observation.ObservationcreateObservation(MessageEE message) protected voiddoExecuteListener(SessionEE session, MessageEE message) 指定されたリスナーを実行し、後でトランザクションをコミットまたはロールバックします(必要な場合)。protected voiddoInvokeListener(MessageListenerEE listener, MessageEE message) 指定されたリスナーを標準の JMSMessageListenerEE として呼び出します。protected voiddoInvokeListener(SessionAwareMessageListener listener, SessionEE session, MessageEE message) 指定されたリスナーを Spring SessionAwareMessageListener として呼び出し、要求された場合は新しい JMS セッションを(潜在的に独自のトランザクションで)リスナーに公開します。protected voidexecuteListener(SessionEE session, MessageEE message) 指定されたリスナーを実行し、後でトランザクションをコミットまたはロールバックします(必要な場合)。protected StringSEgetDefaultSubscriptionName(ObjectSE messageListener) 指定されたメッセージリスナーのデフォルトのサブスクリプション名を決定します。メッセージを受け取る宛先を返します。protected StringSEこのコンテナーの JMS 宛先を説明する文字列を返します(決してnullではありません)。メッセージを受信する宛先の名前を返します。作成する永続サブスクリプションの名前を返します(存在する場合)。MessageEE の処理中にスローされたキャッチされない例外が発生した場合に呼び出されるErrorHandlerを返します。登録されたメッセージリスナーまたは呼び出しインフラストラクチャ(存在する場合)によって JMSException がスローされた場合に通知する JMS ExceptionListener を返します。MessageEE があれば、それを変換するために使用できるMessageConverterを返します。登録するメッセージリスナーオブジェクトを返します。JMS メッセージセレクター式(ない場合はnull)を返します。io.micrometer.observation.ObservationRegistryJMS message processing observationsの記録に使用されたObservationRegistryを返します。応答を送信するときに使用するQosSettingsを返すか、ブローカーのデフォルトを使用する必要がある場合はnullを返します。作成するサブスクリプションの名前を返します(ある場合)。protected voidリスナーの実行中に発生した特定の例外を処理します。protected void登録されているErrorHandlerがある場合はそれを呼び出します。protected void登録済みの JMS ExceptionListener があれば呼び出します。protected voidinvokeListener(SessionEE session, MessageEE message) 指定されたリスナーを呼び出す: 標準的な JMS の MessageListener または、(できれば)Spring の SessionAwareMessageListener。booleanリスナーコンテナーが停止している間に受信メッセージを受け入れるかどうかを返します。booleanリスナー JMSSessionEE を登録済みのSessionAwareMessageListenerに公開するかどうかを返します。boolean独自の接続によって公開されたメッセージの配信を禁止するかどうかを返します。booleanパブリッシュ / サブスクライブドメイン(TopicsEE)が返信に使用されるかどうかを返します。protected booleanisSessionLocallyTransacted(SessionEE session) 指定されたセッションがローカルでトランザクション処理されているかどうか、つまり、そのトランザクションが外部リスナーのコーディネーターではなく、このリスナーコンテナーのセッション処理によって管理されているかどうかを確認します。booleanサブスクリプションを永続的にするかどうかを返します。booleanサブスクリプションを共有するかどうかを返します。protected voidrollbackIfNecessary(SessionEE session) 必要に応じて、ロールバックを実行します。protected voidrollbackOnExceptionIfNecessary(SessionEE session, ThrowableSE ex) ロールバックを実行し、ロールバック例外を適切に処理します。voidsetAcceptMessagesWhileStopping(boolean acceptMessagesWhileStopping) リスナコンテナーの停止中に受信メッセージを受け入れるかどうかを設定します。abstract voidsetConcurrency(StringSE concurrency) 同時実行制限を指定します。voidsetDestination(DestinationEE destination) メッセージの送信先を設定します。voidsetDestinationName(StringSE destinationName) メッセージを受信する宛先の名前を設定します。voidsetDurableSubscriptionName(StringSE durableSubscriptionName) 作成する永続サブスクリプションの名前を設定します。voidsetErrorHandler(ErrorHandler errorHandler) MessageEE の処理中にスローされたキャッチされない例外が発生した場合に呼び出されるErrorHandlerを設定します。voidsetExceptionListener(ExceptionListenerEE exceptionListener) 登録されたメッセージリスナーまたは呼び出しインフラストラクチャによって JMSException がスローされた場合に通知するように JMS ExceptionListener を設定します。voidsetExposeListenerSession(boolean exposeListenerSession) リスナー JMS セッションを登録済みのSessionAwareMessageListenerおよびJmsTemplate呼び出しに公開するかどうかを設定します。voidsetMessageConverter(MessageConverter messageConverter) JMS メッセージを変換するためのMessageConverter戦略を設定します。voidsetMessageListener(ObjectSE messageListener) 登録するメッセージリスナーの実装を設定します。voidsetMessageSelector(StringSE messageSelector) JMS メッセージセレクター式を設定します(ない場合はnull)。voidsetObservationRegistry(io.micrometer.observation.ObservationRegistry observationRegistry) JMS message processing observationsの記録に使用するObservationRegistryを設定します。voidsetPubSubNoLocal(boolean pubSubNoLocal) 独自の接続によって公開されたメッセージの配信を禁止するかどうかを設定します。voidsetReplyPubSubDomain(boolean replyPubSubDomain) 返信先の種類を設定します。voidsetReplyQosSettings(QosSettings replyQosSettings) 返信を送信するときに使用するQosSettingsを構成します。voidsetSubscriptionDurable(boolean subscriptionDurable) サブスクリプションを永続的にするかどうかを設定します。voidsetSubscriptionName(StringSE subscriptionName) 作成するサブスクリプションの名前を設定します。voidsetSubscriptionShared(boolean subscriptionShared) サブスクリプションを共有するかどうかを設定します。voidsetupMessageListener(ObjectSE messageListener) 使用するメッセージリスナーを設定します。protected voidこのコンテナーの構成を検証します。クラス org.springframework.jms.listener.AbstractJmsListeningContainer から継承されたメソッド
afterPropertiesSet, createSharedConnection, destroy, doInitialize, doRescheduleTask, doShutdown, doStart, doStop, establishSharedConnection, getBeanName, getClientId, getPausedTaskCount, getPhase, getSharedConnection, initialize, isActive, isAutoStartup, isRunning, logRejectedTask, prepareSharedConnection, refreshSharedConnection, releaseSharedConnection, rescheduleTaskIfNecessary, resumePausedTasks, runningAllowed, setAutoStartup, setBeanName, setClientId, setPhase, sharedConnectionEnabled, 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
コンストラクターの詳細
AbstractMessageListenerContainer
public AbstractMessageListenerContainer()
メソッドの詳細
setConcurrency
同時実行制限を指定します。setDestination
メッセージの送信先を設定します。あるいは、
DestinationResolverを介して動的に解決される "destinationName" を指定します。メモ: 宛先は実行時に置き換えられ、リスナーコンテナーが新しい宛先をすぐに取得します(たとえば、キャッシュレベルが CACHE_CONSUMER 未満である限り、DefaultMessageListenerContainer で機能します)。ただし、これは高度な使用箇所と見なされます。注意して使用してください!
getDestination
メッセージを受け取る宛先を返します。構成された宛先が実際のDestinationEE 型でない場合は、nullになります。c.f.when the destination is a String。setDestinationName
メッセージを受信する宛先の名前を設定します。指定された名前は、構成された
destination resolverを介して動的に解決されます。または、JMS
DestinationEE オブジェクトを「宛先」として指定します。メモ: 宛先は実行時に置き換えられ、リスナーコンテナーが新しい宛先をすぐに取得します(たとえば、キャッシュレベルが CACHE_CONSUMER 未満である限り、DefaultMessageListenerContainer で機能します)。ただし、これは高度な使用箇所と見なされます。注意して使用してください!
getDestinationName
getDestinationDescription
このコンテナーの JMS 宛先を説明する文字列を返します(決してnullではありません)。setMessageSelector
JMS メッセージセレクター式を設定します(ない場合はnull)。デフォルトはなしです。セレクター式の詳細な定義については、JMS 仕様を参照してください。
メモ: メッセージセレクターは実行時に置き換えられ、リスナーコンテナーは新しいセレクター値をすぐに取得します(たとえば、キャッシュレベルが CACHE_CONSUMER 未満である限り、DefaultMessageListenerContainer で機能します)。ただし、これは高度な使用箇所と見なされます。注意して使用してください!
getMessageSelector
JMS メッセージセレクター式(ない場合はnull)を返します。setMessageListener
登録するメッセージリスナーの実装を設定します。これは、標準の JMSMessageListenerEE オブジェクトまたは SpringSessionAwareMessageListenerオブジェクトのいずれかです。メモ: メッセージリスナーは実行時に置き換えられ、リスナーコンテナーは新しいリスナーオブジェクトをすぐに取得します(たとえば、キャッシュレベルが CACHE_CONSUMER 未満である限り、DefaultMessageListenerContainer で動作します)。ただし、これは高度な使用箇所と見なされます。注意して使用してください!
- 例外:
IllegalArgumentExceptionSE- 指定されたリスナーがMessageListenerEE でもSessionAwareMessageListenerでもない場合- 関連事項:
getMessageListener
登録するメッセージリスナーオブジェクトを返します。checkMessageListener
指定されたメッセージリスナーを確認し、サポートされているリスナー型に対応していない場合は例外をスローします。デフォルトでは、標準の JMS
MessageListenerEE オブジェクトまたは SpringSessionAwareMessageListenerオブジェクトのみが受け入れられます。- パラメーター:
messageListener- チェックするメッセージリスナーオブジェクト- 例外:
IllegalArgumentExceptionSE- 指定されたリスナーがMessageListenerEE でもSessionAwareMessageListenerでもない場合- 関連事項:
getDefaultSubscriptionName
指定されたメッセージリスナーのデフォルトのサブスクリプション名を決定します。- パラメーター:
messageListener- チェックするメッセージリスナーオブジェクト- 戻り値:
- デフォルトのサブスクリプション名
- 関連事項:
setSubscriptionDurable
public void setSubscriptionDurable(boolean subscriptionDurable) サブスクリプションを永続的にするかどうかを設定します。使用する永続サブスクリプション名は、"subscriptionName" プロパティで指定できます。デフォルトは "false" です。永続サブスクリプションを登録するには、これを "true" に設定します。通常は "subscriptionName" 値と組み合わせて使用します (メッセージリスナークラス名がサブスクリプション名として十分な場合を除く)。
トピック (pub-sub ドメイン) をリッスンしている場合にのみ意味があるため、このメソッドは "pubSubDomain" フラグも切り替えます。
isSubscriptionDurable
public boolean isSubscriptionDurable()サブスクリプションを永続的にするかどうかを返します。setSubscriptionName
作成するサブスクリプションの名前を設定します。共有または永続サブスクリプションを持つトピック(pub-sub ドメイン)の場合に適用されます。サブスクリプション名は、このクライアントの JMS クライアント ID 内で一意である必要があります。デフォルトは、指定されたメッセージリスナーのクラス名です。
メモ: 共有サブスクリプション(JMS 2.0 が必要)を除き、各サブスクリプションで許可される同時コンシューマーは 1 つ(このメッセージリスナーコンテナーのデフォルト)です。
getSubscriptionName
作成するサブスクリプションの名前を返します(ある場合)。- 導入:
- 4.1
setDurableSubscriptionName
作成する永続サブスクリプションの名前を設定します。このメソッドは pub-sub ドメインモードに切り替え、サブスクリプションの永続化もアクティブ化します。永続サブスクリプション名は、このクライアントの JMS クライアント ID 内で一意である必要があります。デフォルトは、指定されたメッセージリスナーのクラス名です。
メモ: 共有永続サブスクリプション(JMS 2.0 が必要)を除いて、各永続サブスクリプションで許可される同時コンシューマーは 1 つだけです(これはこのメッセージリスナーコンテナーのデフォルトです)。
getDurableSubscriptionName
作成する永続サブスクリプションの名前を返します(存在する場合)。setPubSubNoLocal
public void setPubSubNoLocal(boolean pubSubNoLocal) 独自の接続によって公開されたメッセージの配信を禁止するかどうかを設定します。デフォルトは "false" です。isPubSubNoLocal
public boolean isPubSubNoLocal()独自の接続によって公開されたメッセージの配信を禁止するかどうかを返します。- 導入:
- 4.1
setReplyPubSubDomain
public void setReplyPubSubDomain(boolean replyPubSubDomain) 返信先の種類を設定します。デフォルトでは、構成されたpubSubDomain値が使用されます(JmsDestinationAccessor.isPubSubDomain()を参照)。この設定は、動的宛先が有効な場合に解決する宛先の型を主に示します。
isReplyPubSubDomain
public boolean isReplyPubSubDomain()- 次で指定:
- インターフェース
MessageListenerContainerのisReplyPubSubDomain - 導入:
- 4.2
setReplyQosSettings
返信を送信するときに使用するQosSettingsを構成します。nullに設定して、ブローカーのデフォルトを使用する必要があることを示すことができます。- パラメーター:
replyQosSettings- 応答を送信するときに使用する QoS 設定、またはデフォルト値を使用するnull- 導入:
- 5.0
getReplyQosSettings
インターフェースからコピーされた説明:MessageListenerContainer応答を送信するときに使用するQosSettingsを返すか、ブローカーのデフォルトを使用する必要がある場合はnullを返します。- 次で指定:
- インターフェース
MessageListenerContainerのgetReplyQosSettings
setMessageConverter
JMS メッセージを変換するためのMessageConverter戦略を設定します。- 導入:
- 4.1
getMessageConverter
インターフェースからコピーされた説明:MessageListenerContainerMessageEE があれば、それを変換するために使用できるMessageConverterを返します。- 次で指定:
- インターフェース
MessageListenerContainerのgetMessageConverter
setExceptionListener
登録されたメッセージリスナーまたは呼び出しインフラストラクチャによって JMSException がスローされた場合に通知するように JMS ExceptionListener を設定します。getExceptionListener
登録されたメッセージリスナーまたは呼び出しインフラストラクチャ(存在する場合)によって JMSException がスローされた場合に通知する JMS ExceptionListener を返します。setErrorHandler
MessageEE の処理中にスローされたキャッチされない例外が発生した場合に呼び出されるErrorHandlerを設定します。デフォルトでは、ErrorHandler は存在しないため、エラーレベルのログが唯一の結果になります。
getErrorHandler
MessageEE の処理中にスローされたキャッチされない例外が発生した場合に呼び出されるErrorHandlerを返します。- 導入:
- 4.1
setObservationRegistry
public void setObservationRegistry(@Nullable io.micrometer.observation.ObservationRegistry observationRegistry) JMS message processing observationsの記録に使用するObservationRegistryを設定します。レジストリが設定されていない場合は、デフォルトで no-op 監視になります。- 導入:
- 6.1
getObservationRegistry
JMS message processing observationsの記録に使用されたObservationRegistryを返します。- 導入:
- 6.1
setExposeListenerSession
public void setExposeListenerSession(boolean exposeListenerSession) リスナー JMS セッションを登録済みのSessionAwareMessageListenerおよびJmsTemplate呼び出しに公開するかどうかを設定します。デフォルトは "true" で、リスナーの
SessionEE を再利用します。これをオフにすると、一部の JMS プロバイダーで必要になる可能性のある、同じ基礎となる JMSConnectionEE からフェッチされた新しい JMS セッションが公開されます。外部トランザクションマネージャーによって管理されるセッションは、常に
JmsTemplate呼び出しに公開されることに注意してください。JmsTemplate 露出に関しては、この設定はローカルでトランザクション処理されたセッションにのみ影響します。isExposeListenerSession
public boolean isExposeListenerSession()リスナー JMSSessionEE を登録済みのSessionAwareMessageListenerに公開するかどうかを返します。setAcceptMessagesWhileStopping
public void setAcceptMessagesWhileStopping(boolean acceptMessagesWhileStopping) リスナコンテナーの停止中に受信メッセージを受け入れるかどうかを設定します。デフォルトは "false" で、受信の試行を中止することでそのようなメッセージを拒否します。停止フェーズでもこのようなメッセージを完全に処理するには、このフラグをオンにします。ただし、新しく送信されたメッセージでも処理される可能性があるという欠点があります(すべての受信タイムアウトが期限切れになる前に受信した場合)。
注意 : このような受信メッセージの受信試行を中止すると、影響を受けるメッセージのプロバイダーの再試行回数が減少する可能性があります。同時コンシューマーの数が多い場合は、すべての潜在的な停止シナリオで安全を確保するために、リトライの数がコンシューマーの数よりも多いことを確認してください。
isAcceptMessagesWhileStopping
public boolean isAcceptMessagesWhileStopping()リスナーコンテナーが停止している間に受信メッセージを受け入れるかどうかを返します。validateConfiguration
protected void validateConfiguration()クラスからコピーされた説明:AbstractJmsListeningContainerこのコンテナーの構成を検証します。デフォルトの実装は空です。サブクラスでオーバーライドされます。
- オーバーライド:
- クラス
AbstractJmsListeningContainerのvalidateConfiguration
setupMessageListener
インターフェースからコピーされた説明:MessageListenerContainer使用するメッセージリスナーを設定します。そのメッセージリスナー型がサポートされていない場合、IllegalArgumentExceptionSE をスローします。- 次で指定:
- インターフェース
MessageListenerContainerのsetupMessageListener
executeListener
指定されたリスナーを実行し、後でトランザクションをコミットまたはロールバックします(必要な場合)。createObservation
doExecuteListener
指定されたリスナーを実行し、後でトランザクションをコミットまたはロールバックします(必要な場合)。- パラメーター:
session- 操作する JMS セッションmessage- 受信した JMSMessageEE- 例外:
JMSExceptionEE- JMS API メソッドによってスローされた場合- 関連事項:
invokeListener
指定されたリスナーを呼び出す: 標準的な JMS の MessageListener または、(できれば)Spring の SessionAwareMessageListener。- パラメーター:
session- 操作する JMS セッションmessage- 受信した JMSMessageEE- 例外:
JMSExceptionEE- JMS API メソッドによってスローされた場合- 関連事項:
doInvokeListener
protected void doInvokeListener(SessionAwareMessageListener listener, SessionEE session, MessageEE message) throws JMSExceptionEE 指定されたリスナーを Spring SessionAwareMessageListener として呼び出し、要求された場合は新しい JMS セッションを(潜在的に独自のトランザクションで)リスナーに公開します。- パラメーター:
listener- 呼び出す Spring SessionAwareMessageListenersession- 操作する JMS セッションmessage- 受信した JMSMessageEE- 例外:
JMSExceptionEE- JMS API メソッドによってスローされた場合- 関連事項:
doInvokeListener
protected void doInvokeListener(MessageListenerEE listener, MessageEE message) throws JMSExceptionEE 指定されたリスナーを標準の JMSMessageListenerEE として呼び出します。デフォルトの実装では、
onMessageメソッドの単純な呼び出しを実行します。- パラメーター:
listener- 呼び出す JMSMessageListenermessage- 受信した JMSMessageEE- 例外:
JMSExceptionEE- JMS API メソッドによってスローされた場合- 関連事項:
commitIfNecessary
protected void commitIfNecessary(SessionEE session, @Nullable MessageEE message) throws JMSExceptionEE 必要に応じて、コミットまたはメッセージ確認を実行します。- パラメーター:
session- コミットする JMSSessionEEmessage-MessageEE が確認する- 例外:
JMSExceptionEE- コミット失敗の場合
rollbackIfNecessary
必要に応じて、ロールバックを実行します。- パラメーター:
session- ロールバックする JMS セッション- 例外:
JMSExceptionEE- ロールバックエラーの場合
rollbackOnExceptionIfNecessary
protected void rollbackOnExceptionIfNecessary(SessionEE session, ThrowableSE ex) throws JMSExceptionEE ロールバックを実行し、ロールバック例外を適切に処理します。- パラメーター:
session- ロールバックする JMS セッションex- スローされたアプリケーションの例外またはエラー- 例外:
JMSExceptionEE- ロールバックエラーの場合
isSessionLocallyTransacted
指定されたセッションがローカルでトランザクション処理されているかどうか、つまり、そのトランザクションが外部リスナーのコーディネーターではなく、このリスナーコンテナーのセッション処理によって管理されているかどうかを確認します。メモ: セッション自体のトランザクション済みフラグは、以前にすでにチェックされています。このメソッドは、セッションのトランザクションがローカルであるか、外部で調整されているかを確認するためのものです。
- パラメーター:
session- チェックするセッション- 戻り値:
- 指定されたセッションがローカルでトランザクションされるかどうか
- 関連事項:
createConsumer
protected MessageConsumerEE createConsumer(SessionEE session, DestinationEE destination) throws JMSExceptionEE 指定されたセッションと宛先の JMS MessageConsumer を作成します。この実装では、JMS 1.1 API を使用します。
- パラメーター:
session- MessageConsumer を作成する JMS セッションdestination- MessageConsumer を作成する JMS 宛先- 戻り値:
- 新しい JMS MessageConsumer
- 例外:
JMSExceptionEE- JMS API メソッドによってスローされた場合
handleListenerException
リスナーの実行中に発生した特定の例外を処理します。デフォルトの実装では、例外を JMS プロバイダーに伝播せずに、
WARNレベルでログに記録します。確認応答やトランザクションのすべての処理がこのリスナーコンテナーによって行われると仮定します。これはサブクラスでオーバーライドできます。- パラメーター:
ex- 処理する例外
invokeExceptionListener
登録済みの JMS ExceptionListener があれば呼び出します。- パラメーター:
ex- JMS 処理中に発生した例外- 関連事項:
invokeErrorHandler
登録されているErrorHandlerがある場合はそれを呼び出します。それ以外の場合は、WARNレベルでログを記録します。- パラメーター:
ex- JMS 処理中に発生した捕捉されなかったエラー- 関連事項: