クラス AbstractAdaptableMessageListener
- java.lang.Object
-
- org.springframework.amqp.rabbit.listener.adapter.AbstractAdaptableMessageListener
- 実装されたすべてのインターフェース:
MessageListener
,ChannelAwareMessageListener
public abstract class AbstractAdaptableMessageListener extends java.lang.Object implements ChannelAwareMessageListener
Message
のペイロードを抽出するために必要なインフラストラクチャを提供する抽象MessageListener
アダプター。- 導入:
- 1.4
- 作成者:
- Stephane Nicoll, Gary Russell, Artem Bilan, Johan Haleby
- 関連事項:
ChannelAwareMessageListener
ネストされたクラスのサマリー
ネストされたクラス 修飾子と型 クラス 説明 static class
AbstractAdaptableMessageListener.ReplyExpressionRoot
応答式評価のルートオブジェクト。
コンストラクターのサマリー
コンストラクター コンストラクター 説明 AbstractAdaptableMessageListener()
メソッドのサマリー
すべてのメソッド インスタンスメソッド 具象メソッド 修飾子と型 メソッド 説明 protected Message
buildMessage(com.rabbitmq.client.Channel channel, java.lang.Object result, java.lang.reflect.Type genericType)
指定された結果オブジェクトに基づいて、レスポンスとして送信される Rabbit メッセージを作成します。void
containerAckMode(AcknowledgeMode mode)
コンテナーによって呼び出され、リスナーに確認モードを通知します。protected Message
convert(java.lang.Object result, java.lang.reflect.Type genericType, MessageConverter converter)
設定に基づいた返信コンテンツ型で、メッセージに変換します。protected void
doHandleResult(InvocationResult resultArg, Message request, com.rabbitmq.client.Channel channel, java.lang.Object source)
protected void
doPublish(com.rabbitmq.client.Channel channel, Address replyTo, Message message)
protected java.lang.Object
extractMessage(Message message)
指定された Rabbit メッセージからメッセージ本文を抽出します。java.lang.String
getEncoding()
メッセージプロパティでバイト配列と文字列を相互変換するときに使用するエンコーディング。protected MessageConverter
getMessageConverter()
受信 Rabbit メッセージをリスナーメソッドの引数に変換し、リスナーメソッドから返されたオブジェクトを Rabbit メッセージに戻すコンバーターを返します。protected java.lang.String
getReceivedExchange(Message request)
protected java.lang.String
getReplyContentType()
返信コンテンツ型を取得します。protected Address
getReplyToAddress(Message request, java.lang.Object source, InvocationResult result)
指定されたメッセージの返信先アドレスを決定します。protected void
handleListenerException(java.lang.Throwable ex)
リスナーの実行中に発生した特定の例外を処理します。protected void
handleResult(InvocationResult resultArg, Message request, com.rabbitmq.client.Channel channel)
リスナメソッドから返された結果オブジェクトを処理し、レスポンスメッセージを送り返します。protected void
handleResult(InvocationResult resultArg, Message request, com.rabbitmq.client.Channel channel, java.lang.Object source)
リスナメソッドから返された結果オブジェクトを処理し、レスポンスメッセージを送り返します。protected boolean
isConverterWinsContentType()
コンバーターによって設定されたコンテンツ型が優先されるかどうかを返します。protected void
postProcessChannel(com.rabbitmq.client.Channel channel, Message response)
レスポンスを送信する前に、指定されたメッセージを後処理します。protected void
postProcessResponse(Message request, Message response)
指定されたレスポンスメッセージを送信する前に後処理します。protected void
sendResponse(com.rabbitmq.client.Channel channel, Address replyTo, Message messageIn)
指定されたレスポンスメッセージを指定された宛先に送信します。void
setBeanResolver(BeanResolver beanResolver)
ランタイム SpEL 式の Bean リゾルバーを設定します。void
setBeforeSendReplyPostProcessors(MessagePostProcessor... beforeSendReplyPostProcessors)
返信を送信する前に適用されるポストプロセッサーを設定します。void
setConverterWinsContentType(boolean converterWinsContentType)
コンバーターで設定したコンテンツ型を優先するかどうかを設定します。void
setDefaultRequeueRejected(boolean defaultRequeueRejected)
このリスナーのコンテナーと同等のプロパティの値に設定します。void
setEncoding(java.lang.String encoding)
メッセージプロパティでバイト配列と文字列を相互変換するときに使用するエンコーディング。void
setMandatoryPublish(boolean mandatoryPublish)
void
setMessageConverter(MessageConverter messageConverter)
受信 Rabbit メッセージをリスナーメソッドの引数に変換し、リスナーメソッドから返されたオブジェクトを Rabbit メッセージに戻すコンバーターを設定します。void
setRecoveryCallback(org.springframework.retry.RecoveryCallback<?> recoveryCallback)
再試行が使い果たされたときに呼び出すRecoveryCallback
を設定します。void
setReplyContentType(java.lang.String replyContentType)
返信内容の種類を設定します。void
setReplyPostProcessor(ReplyPostProcessor replyPostProcessor)
ReplyPostProcessor
を設定して、レスポンスメッセージを送信する前に後処理します。void
setResponseAddress(java.lang.String defaultReplyTo)
レスポンスメッセージを送信するときに使用するデフォルトの replyTo アドレスを設定します。void
setResponseExchange(java.lang.String responseExchange)
レスポンスメッセージを送信するときに使用する交換を設定します。void
setResponseRoutingKey(java.lang.String responseRoutingKey)
レスポンスメッセージを送信するときに使用するルーティングキーを設定します。void
setRetryTemplate(org.springframework.retry.support.RetryTemplate retryTemplate)
応答を送信するときに使用するRetryTemplate
を設定します。クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
インターフェース org.springframework.amqp.rabbit.listener.api.ChannelAwareMessageListener から継承されたメソッド
onMessage, onMessage, onMessageBatch
インターフェース org.springframework.amqp.core.MessageListener から継承されたメソッド
isAsyncReplies, onMessageBatch
フィールドの詳細
logger
protected final Log logger
サブクラスで利用可能なロガー。
メソッドの詳細
setResponseRoutingKey
public void setResponseRoutingKey(java.lang.String responseRoutingKey)
レスポンスメッセージを送信するときに使用するルーティングキーを設定します。これは、"ReplyTo" プロパティを持たないリクエストメッセージの場合に適用されます。レスポンス宛先は、結果オブジェクトを返すリスナーメソッドにのみ関連します。結果オブジェクトはレスポンスメッセージにラップされ、レスポンス宛先に送信されます。
- パラメーター:
responseRoutingKey
- ルーティングキー。
setEncoding
public void setEncoding(java.lang.String encoding)
メッセージプロパティでバイト配列と文字列を相互変換するときに使用するエンコーディング。- パラメーター:
encoding
- 設定するエンコーディング。
getEncoding
public java.lang.String getEncoding()
メッセージプロパティでバイト配列と文字列を相互変換するときに使用するエンコーディング。- 戻り値:
- エンコーディングのエンコーディング。
setResponseExchange
public void setResponseExchange(java.lang.String responseExchange)
レスポンスメッセージを送信するときに使用する交換を設定します。これは、受信したメッセージからの交換が null の場合にのみ使用されます。レスポンス宛先は、結果オブジェクトを返すリスナーメソッドにのみ関連します。結果オブジェクトはレスポンスメッセージにラップされ、レスポンス宛先に送信されます。
- パラメーター:
responseExchange
- 交換。
setResponseAddress
public void setResponseAddress(java.lang.String defaultReplyTo)
レスポンスメッセージを送信するときに使用するデフォルトの replyTo アドレスを設定します。これは、受信したメッセージの replyTo が null の場合にのみ使用されます。レスポンス宛先は、結果オブジェクトを返すリスナーメソッドにのみ関連します。結果オブジェクトはレスポンスメッセージにラップされ、レスポンス宛先に送信されます。
これは
Address
で解析されるため、exchange/rk の形式である必要があります。"!{...}" で囲まれた文字列にすることができます。この場合、式は実行時に評価されます。詳細については、リファレンスマニュアルを参照してください。
- パラメーター:
defaultReplyTo
- replyTo アドレス。- 導入:
- 1.6
setMandatoryPublish
public void setMandatoryPublish(boolean mandatoryPublish)
setMessageConverter
public void setMessageConverter(MessageConverter messageConverter)
受信 Rabbit メッセージをリスナーメソッドの引数に変換し、リスナーメソッドから返されたオブジェクトを Rabbit メッセージに戻すコンバーターを設定します。デフォルトのコンバーターは、「テキスト」コンテンツ型を処理できる
SimpleMessageConverter
です。- パラメーター:
messageConverter
- メッセージコンバーター。
setBeforeSendReplyPostProcessors
public void setBeforeSendReplyPostProcessors(MessagePostProcessor... beforeSendReplyPostProcessors)
返信を送信する前に適用されるポストプロセッサーを設定します。- パラメーター:
beforeSendReplyPostProcessors
- ポストプロセッサー。- 導入:
- 2.0.3
setRetryTemplate
public void setRetryTemplate(org.springframework.retry.support.RetryTemplate retryTemplate)
応答を送信するときに使用するRetryTemplate
を設定します。- パラメーター:
retryTemplate
- テンプレート。- 導入:
- 2.0.6
- 関連事項:
setRecoveryCallback(RecoveryCallback)
setRecoveryCallback
public void setRecoveryCallback(org.springframework.retry.RecoveryCallback<?> recoveryCallback)
再試行が使い果たされたときに呼び出すRecoveryCallback
を設定します。- パラメーター:
recoveryCallback
- リカバリコールバック。- 導入:
- 2.0.6
- 関連事項:
setRetryTemplate(RetryTemplate)
setBeanResolver
public void setBeanResolver(BeanResolver beanResolver)
ランタイム SpEL 式の Bean リゾルバーを設定します。また、標準型のコンバーターとマップアクセサーを使用して評価コンテキストを構成します。- パラメーター:
beanResolver
- リゾルバー。- 導入:
- 1.6
setReplyPostProcessor
public void setReplyPostProcessor(ReplyPostProcessor replyPostProcessor)
レスポンスメッセージを送信する前に後処理するためにReplyPostProcessor
を設定します。これは、correlationId ヘッダーを設定するpostProcessResponse(Message, Message)
の後に呼び出されます。- パラメーター:
replyPostProcessor
- ポストプロセッサー。- 導入:
- 2.2.5
getReplyContentType
protected java.lang.String getReplyContentType()
返信コンテンツ型を取得します。- 戻り値:
- コンテンツ型。
- 導入:
- 2.3
setReplyContentType
public void setReplyContentType(java.lang.String replyContentType)
返信内容の種類を設定します。- パラメーター:
replyContentType
- コンテンツ型。- 導入:
- 2.3
isConverterWinsContentType
protected boolean isConverterWinsContentType()
コンバーターによって設定されたコンテンツ型が優先されるかどうかを返します。- 戻り値:
- 返信コンテンツ型を常に適用する場合は false。
- 導入:
- 2.3
setConverterWinsContentType
public void setConverterWinsContentType(boolean converterWinsContentType)
コンバーターで設定したコンテンツ型を優先するかどうかを設定します。- パラメーター:
converterWinsContentType
- 返信コンテンツ型を常に適用する場合は false。- 導入:
- 2.3
getMessageConverter
protected MessageConverter getMessageConverter()
受信 Rabbit メッセージをリスナーメソッドの引数に変換し、リスナーメソッドから返されたオブジェクトを Rabbit メッセージに戻すコンバーターを返します。- 戻り値:
- メッセージコンバーター。
setDefaultRequeueRejected
public void setDefaultRequeueRejected(boolean defaultRequeueRejected)
このリスナーのコンテナーと同等のプロパティの値に設定します。非同期リスナーから拒否するときに使用されます。- パラメーター:
defaultRequeueRejected
- 再キューに入れない場合は false。- 導入:
- 2.1.8
containerAckMode
public void containerAckMode(AcknowledgeMode mode)
インターフェースからコピーされた説明:MessageListener
コンテナーによって呼び出され、リスナーに確認モードを通知します。- 次で指定:
- インターフェース
MessageListener
のcontainerAckMode
- パラメーター:
mode
-AcknowledgeMode
handleListenerException
protected void handleListenerException(java.lang.Throwable ex)
リスナーの実行中に発生した特定の例外を処理します。デフォルトの実装では、エラーレベルで例外が記録されます。オーバーライドされた
ChannelAwareMessageListener.onMessage(Message)
またはChannelAwareMessageListener.onMessage(Message, com.rabbitmq.client.Channel)
からの継承が使用できます- パラメーター:
ex
- 処理する例外
extractMessage
protected java.lang.Object extractMessage(Message message)
指定された Rabbit メッセージからメッセージ本文を抽出します。- パラメーター:
message
- RabbitMessage
- 戻り値:
- メッセージの内容。引数としてリスナーメソッドに渡されます
handleResult
protected void handleResult(InvocationResult resultArg, Message request, com.rabbitmq.client.Channel channel)
リスナメソッドから返された結果オブジェクトを処理し、レスポンスメッセージを送り返します。- パラメーター:
resultArg
- 処理する結果オブジェクト (非null
)request
- 元のリクエストメッセージchannel
- 動作する Rabbit チャネル (null
の場合があります)- 関連事項:
buildMessage(com.rabbitmq.client.Channel, java.lang.Object, java.lang.reflect.Type)
,postProcessResponse(org.springframework.amqp.core.Message, org.springframework.amqp.core.Message)
,getReplyToAddress(Message, Object, InvocationResult)
,sendResponse(com.rabbitmq.client.Channel, org.springframework.amqp.core.Address, org.springframework.amqp.core.Message)
handleResult
protected void handleResult(InvocationResult resultArg, Message request, com.rabbitmq.client.Channel channel, java.lang.Object source)
リスナメソッドから返された結果オブジェクトを処理し、レスポンスメッセージを送り返します。- パラメーター:
resultArg
- 処理する結果オブジェクト (非null
)request
- 元のリクエストメッセージchannel
- 動作する Rabbit チャネル (null
の場合があります)source
- メソッド呼び出しのソースデータ - 例:o.s.messaging.Message<?>
; null の可能性があります- 関連事項:
buildMessage(com.rabbitmq.client.Channel, java.lang.Object, java.lang.reflect.Type)
,postProcessResponse(org.springframework.amqp.core.Message, org.springframework.amqp.core.Message)
,getReplyToAddress(Message, Object, InvocationResult)
,sendResponse(com.rabbitmq.client.Channel, org.springframework.amqp.core.Address, org.springframework.amqp.core.Message)
doHandleResult
protected void doHandleResult(InvocationResult resultArg, Message request, com.rabbitmq.client.Channel channel, java.lang.Object source)
getReceivedExchange
protected java.lang.String getReceivedExchange(Message request)
buildMessage
protected Message buildMessage(com.rabbitmq.client.Channel channel, java.lang.Object result, java.lang.reflect.Type genericType)
指定された結果オブジェクトに基づいて、レスポンスとして送信される Rabbit メッセージを作成します。- パラメーター:
channel
- 動作する Rabbit チャネル。result
- リスナーメソッドから返されるメッセージの内容。genericType
- 型ヘッダーを設定するジェネリクス型。- 戻り値:
- Rabbit
Message
(決してnull
ではありません)。 - 関連事項:
setMessageConverter(org.springframework.amqp.support.converter.MessageConverter)
convert
protected Message convert(java.lang.Object result, java.lang.reflect.Type genericType, MessageConverter converter)
設定に基づいた返信コンテンツ型で、メッセージに変換します。- パラメーター:
result
- 結果。genericType
- 型。converter
- コンバーター。- 戻り値:
- メッセージ。
- 導入:
- 2.3
postProcessResponse
protected void postProcessResponse(Message request, Message response)
指定されたレスポンスメッセージを送信する前に後処理します。デフォルトの実装では、レスポンスの相関 ID がリクエストメッセージの相関 ID (存在する場合) に設定されます。それ以外の場合はリクエストメッセージ ID。
- パラメーター:
request
- 元の受信 Rabbit メッセージresponse
- 送信しようとしている発信 Rabbit メッセージ
getReplyToAddress
protected Address getReplyToAddress(Message request, java.lang.Object source, InvocationResult result)
指定されたメッセージの返信先アドレスを決定します。デフォルトの実装では、最初に指定されたリクエストの Rabbit Reply-To アドレスをチェックします。これが
null
でない場合はそれが返されます。null
の場合は、構成されたデフォルトのレスポンス Exchange とルーティングキーを使用して、返信先アドレスが構築されます。responseExchange プロパティもnull
の場合は、AmqpException
がスローされます。- パラメーター:
request
- 元の受信 Rabbit メッセージ。source
- ソースデータ (例:o.s.messaging.Message<?>
)。result
- 結果。- 戻り値:
- 返信先アドレス (非
null
) - 例外:
AmqpException
-Address
を決定できない場合- 関連事項:
setResponseAddress(String)
,setResponseRoutingKey(String)
,Message.getMessageProperties()
,MessageProperties.getReplyTo()
sendResponse
protected void sendResponse(com.rabbitmq.client.Channel channel, Address replyTo, Message messageIn)
指定されたレスポンスメッセージを指定された宛先に送信します。- パラメーター:
channel
- 動作する Rabbit チャネルreplyTo
- 送信時に使用する Rabbit ReplyTo 文字列。現在、ルーティングキーであると解釈されます。messageIn
- 送信する Rabbit メッセージ- 関連事項:
postProcessResponse(Message, Message)
,setReplyPostProcessor(ReplyPostProcessor)
doPublish
protected void doPublish(com.rabbitmq.client.Channel channel, Address replyTo, Message message) throws java.io.IOException
- 例外:
java.io.IOException
postProcessChannel
protected void postProcessChannel(com.rabbitmq.client.Channel channel, Message response)
レスポンスを送信する前に、指定されたメッセージを後処理します。デフォルトの実装は空です。
- パラメーター:
channel
- チャンネル。response
- 送信しようとしている発信 Rabbit メッセージ