public abstract class AbstractAdaptableMessageListener extends ObjectSE implements MessageListenerEE, SessionAwareMessageListener<MessageEE>
Message
EE のペイロードを抽出するために必要なインフラストラクチャを提供する抽象 JMS MessageListener
EE アダプター。MessageListener
EE, SessionAwareMessageListener
コンストラクターと説明 |
---|
AbstractAdaptableMessageListener() |
修飾子と型 | メソッドと説明 |
---|---|
protected MessageEE | buildMessage(SessionEE session, ObjectSE result) 指定された結果オブジェクトに基づいて、レスポンスとして送信される JMS メッセージを作成します。 |
protected ObjectSE | extractMessage(MessageEE message) 指定された JMS メッセージからメッセージ本文を抽出します。 |
protected DestinationResolver | getDestinationResolver() このアダプターの DestinationResolver を返します。 |
protected MessageConverter | getMessageConverter() 受信 JMS メッセージをリスナーメソッドの引数に変換し、リスナーメソッドから返されたオブジェクトを JMS メッセージに変換するコンバーターを返します。 |
protected MessagingMessageConverter | getMessagingMessageConverter() Message を変換できるようにして、このリスナーの MessagingMessageConverter を返します。 |
protected DestinationEE | getResponseDestination(MessageEE request, MessageEE response, SessionEE session) 指定されたメッセージのレスポンス宛先を決定します。 |
protected QosSettings | getResponseQosSettings() レスポンスを送信するときに使用する QosSettings を返します。デフォルトを使用する必要がある場合は null を返します。 |
protected void | handleListenerException(ThrowableSE ex) リスナーの実行中に発生した特定の例外を処理します。 |
protected void | handleResult(ObjectSE result, MessageEE request, SessionEE session) リスナメソッドから返された結果オブジェクトを処理し、レスポンスメッセージを送り返します。 |
void | onMessage(MessageEE message) 標準 JMS MessageListener EE エントリポイント。 |
abstract void | onMessage(MessageEE message, SessionEE session) 受信した JMS メッセージを処理するためのコールバック。 |
protected void | postProcessProducer(MessageProducerEE producer, MessageEE response) 指定されたメッセージプロデューサーを後処理してから、それを使用してレスポンスを送信します。 |
protected void | postProcessResponse(MessageEE request, MessageEE response) 指定されたレスポンスメッセージを送信する前に後処理します。 |
protected ObjectSE | preProcessResponse(ObjectSE result) Message EE に変換される前に、指定された結果を前処理します。 |
protected DestinationEE | resolveDefaultResponseDestination(SessionEE session) 宛先名の場合、このアクセサーの DestinationResolver を使用して、デフォルトのレスポンス宛先を JMS Destination EE に解決します。 |
protected void | sendResponse(SessionEE session, DestinationEE destination, MessageEE response) 指定されたレスポンスメッセージを指定された宛先に送信します。 |
void | setDefaultResponseDestination(DestinationEE destination) レスポンスメッセージを送信するデフォルトの宛先を設定します。 |
void | setDefaultResponseQueueName(StringSE destinationName) レスポンスメッセージを送信するデフォルトのレスポンスキューの名前を設定します。 |
void | setDefaultResponseTopicName(StringSE destinationName) レスポンスメッセージを送信するデフォルトのレスポンストピックの名前を設定します。 |
void | setDestinationResolver(DestinationResolver destinationResolver) このアダプターのレスポンス宛先名を解決するために使用する DestinationResolver を設定します。 |
void | setHeaderMapper(JmsHeaderMapper headerMapper) JmsHeaderMapper 実装を設定して、標準 JMS ヘッダーのマッピングに使用します。 |
void | setMessageConverter(MessageConverter messageConverter) 受信 JMS メッセージをリスナーメソッドの引数に変換し、リスナーメソッドから返されたオブジェクトを JMS メッセージに戻すコンバーターを設定します。 |
void | setResponseQosSettings(QosSettings responseQosSettings) レスポンスを送信するときに使用する QosSettings を設定します。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
protected final Log logger
public void setDefaultResponseDestination(DestinationEE destination)
レスポンス宛先は、結果オブジェクトを返すリスナーメソッドにのみ関連します。結果オブジェクトはレスポンスメッセージにラップされ、レスポンス宛先に送信されます。
または、DestinationResolver を介して動的に解決される "defaultResponseQueueName" または "defaultResponseTopicName" を指定します。
public void setDefaultResponseQueueName(StringSE destinationName)
または、JMS Destination オブジェクトを "defaultResponseDestination" として指定します。
public void setDefaultResponseTopicName(StringSE destinationName)
または、JMS Destination オブジェクトを "defaultResponseDestination" として指定します。
public void setDestinationResolver(DestinationResolver destinationResolver)
デフォルトのリゾルバーは DynamicDestinationResolver です。宛先名を JNDI ロケーションとして解決するための JndiDestinationResolver を指定します。
protected DestinationResolver getDestinationResolver()
public void setMessageConverter(@Nullable MessageConverter messageConverter)
デフォルトのコンバーターは SimpleMessageConverter
で、BytesMessages
EE、TextMessages
EE、ObjectMessages
EE を処理できます。
@Nullable protected MessageConverter getMessageConverter()
public void setHeaderMapper(JmsHeaderMapper headerMapper)
JmsHeaderMapper
実装を設定して、標準 JMS ヘッダーのマッピングに使用します。デフォルトでは、SimpleJmsHeaderMapper
が使用されます。protected final MessagingMessageConverter getMessagingMessageConverter()
Message
を変換できるようにして、このリスナーの MessagingMessageConverter
を返します。public void setResponseQosSettings(@Nullable QosSettings responseQosSettings)
QosSettings
を設定します。null
に設定して、ブローカーのデフォルトを使用する必要があることを示すことができます。responseQosSettings
- レスポンスを送信するときに使用する QoS 設定、またはデフォルト値を使用する null
。@Nullable protected QosSettings getResponseQosSettings()
QosSettings
を返します。デフォルトを使用する必要がある場合は null
を返します。public void onMessage(MessageEE message)
MessageListener
EE エントリポイント。 メッセージ引数を適切に変換して、メッセージをターゲットリスナメソッドに委譲します。例外の場合、handleListenerException(Throwable)
メソッドが呼び出されます。
注意 : リスナーメソッドから返された結果オブジェクトに基づくレスポンスメッセージの送信はサポートしていません。結果オブジェクトの処理にも SessionAwareMessageListener
エントリポイントを使用します(通常は Spring メッセージリスナーコンテナーを使用)。
MessageListenerEE
の onMessageEE
message
- 受信 JMS メッセージ handleListenerException(java.lang.Throwable)
, onMessage(javax.jms.Message, javax.jms.Session)
public abstract void onMessage(MessageEE message, @Nullable SessionEE session) throws JMSExceptionEE
SessionAwareMessageListener
実装者は、指定されたメッセージを処理し、通常、指定されたセッションを介して応答メッセージを送信します。
SessionAwareMessageListener<MessageEE>
の onMessage
message
- 受信した JMS メッセージ (非 null
)session
- 基礎となる JMS セッション (非 null
)JMSExceptionEE
- JMS メソッドによってスローされた場合 protected void handleListenerException(ThrowableSE ex)
このメソッドは、標準 JMS MessageListener
EE として使用される場合にのみ適用されます。Spring SessionAwareMessageListener
メカニズムの場合、例外は代わりに呼び出し側によって処理されます。
ex
- 処理する例外 onMessage(javax.jms.Message)
protected ObjectSE extractMessage(MessageEE message)
message
- JMS Message
MessageConversionException
- メッセージを抽出できなかった場合 protected void handleResult(ObjectSE result, MessageEE request, @Nullable SessionEE session)
result
- 処理する結果オブジェクト (非 null
)request
- 元のリクエストメッセージ session
- 操作する JMS セッション (null
の場合があります)ReplyFailureException
- レスポンスメッセージを送信できなかった場合 buildMessage(javax.jms.Session, java.lang.Object)
, postProcessResponse(javax.jms.Message, javax.jms.Message)
, getResponseDestination(javax.jms.Message, javax.jms.Message, javax.jms.Session, java.lang.Object)
, sendResponse(javax.jms.Session, javax.jms.Destination, javax.jms.Message)
protected MessageEE buildMessage(SessionEE session, ObjectSE result) throws JMSExceptionEE
session
- 操作する JMS セッション result
- リスナーメソッドから返されるメッセージのコンテンツ Message
(非 null
)JMSExceptionEE
- JMS API メソッドによってスローされた場合 setMessageConverter(org.springframework.jms.support.converter.MessageConverter)
protected ObjectSE preProcessResponse(ObjectSE result)
Message
EE に変換される前に、指定された結果を前処理します。result
- 呼び出しの結果 result
引数またはその他のオブジェクト(結果のラップなど)。protected void postProcessResponse(MessageEE request, MessageEE response) throws JMSExceptionEE
デフォルトの実装では、レスポンスの相関 ID がリクエストメッセージの相関 ID (存在する場合) に設定されます。それ以外の場合はリクエストメッセージ ID。
request
- 元の受信 JMS メッセージ response
- 送信される送信 JMS メッセージ JMSExceptionEE
- JMS API メソッドによってスローされた場合 Message.setJMSCorrelationID(java.lang.String)
EEprotected DestinationEE getResponseDestination(MessageEE request, MessageEE response, SessionEE session) throws JMSExceptionEE
デフォルトの実装では、最初に、提供されたリクエストの JMS Reply-To Destination
EE をチェックします。null
でない場合は返されます。null
の場合、構成された default response destination
が返されます。これも null
の場合、InvalidDestinationException
EE がスローされます。
request
- 元の受信 JMS メッセージ response
- 送信される送信 JMS メッセージ session
- 操作する JMS セッション null
)JMSExceptionEE
- JMS API メソッドによってスローされた場合 InvalidDestinationExceptionEE
- Destination
EE を決定できない場合 setDefaultResponseDestination(javax.jms.Destination)
, Message.getJMSReplyTo()
EE@Nullable protected DestinationEE resolveDefaultResponseDestination(SessionEE session) throws JMSExceptionEE
DestinationResolver
を使用して、デフォルトのレスポンス宛先を JMS Destination
EE に解決します。protected void sendResponse(SessionEE session, DestinationEE destination, MessageEE response) throws JMSExceptionEE
response
- 送信する JMS メッセージ destination
- 送信先の JMS 宛先 session
- 操作する JMS セッション JMSExceptionEE
- JMS API メソッドによってスローされた場合 postProcessProducer(javax.jms.MessageProducer, javax.jms.Message)
, Session.createProducer(javax.jms.Destination)
EE, MessageProducer.send(javax.jms.Message)
EEprotected void postProcessProducer(MessageProducerEE producer, MessageEE response) throws JMSExceptionEE
デフォルトの実装は空です。
producer
- メッセージの送信に使用される JMS メッセージプロデューサー response
- 送信される送信 JMS メッセージ JMSExceptionEE
- JMS API メソッドによってスローされた場合