クラス MessageListenerAdapter
- 実装されたすべてのインターフェース:
InitializingBean
,MessageListener
アダプターのすべてのパラメーターを設定した後、必ず afterPropertiesSet()
を呼び出してください。
基礎となる「デリゲート」が MessageListener
を実装している場合、アダプターはそれにデリゲートし、無効なメソッドを指定できるようにすることに注意してください。ただし、そうでない場合、メソッドは必須になります。この寛大な動作により、アダプターを既存のリスナーとメッセージ POJO 全体で均一に使用できます。
Spring Framework の JMS MessageListenerAdapter を可能な限りモデル化。
デフォルトでは、受信 Redis メッセージのコンテンツは、ターゲットリスナーメソッドに渡される前に抽出され、ターゲットメソッドが生の Message
ではなく文字列やバイト配列などのメッセージコンテンツ型で動作できるようにします。メッセージ型の変換は、Spring Data RedisSerializer
に委譲されます。デフォルトでは、JdkSerializationRedisSerializer
が使用されます。(このような自動メッセージ変換を行わない場合は、必ず Serializer
を null
に設定してください。)
このアダプタークラスに準拠するメソッドシグネチャーの例を以下に示します。この最初の例では、すべての Message
型を処理し、各 Message
型の内容を引数として渡します。
public interface MessageContentsDelegate { void handleMessage(String text); void handleMessage(byte[] bytes); void handleMessage(Person obj); }
さらに、メッセージの送信先のチャネルまたはパターンを、String 型の 2 番目の引数としてメソッドに渡すことができます。
public interface MessageContentsDelegate { void handleMessage(String text, String channel); void handleMessage(byte[] bytes, String pattern); }さらなる例と議論については、このクラス(およびそれに付随する構成)を詳細に説明している Spring Data リファレンスドキュメントを参照してください。 重要 : メッセージの性質上、アダプターが使用するデフォルトのシリアライザーは
StringRedisSerializer
です。メッセージの型が異なる場合は、setSerializer(RedisSerializer)
を使用してメッセージを適宜変更してください。- 作成者:
- Juergen Hoeller, Costin Leau, Greg Turnquist, Thomas Darimont, Christoph Strobl, Mark Paluch
フィールドサマリー
フィールドコンストラクターのサマリー
コンストラクターコンストラクター説明デフォルト設定で新しいMessageListenerAdapter
を作成します。MessageListenerAdapter
(ObjectSE delegate) 指定されたデリゲートの新しいMessageListenerAdapter
を作成します。MessageListenerAdapter
(ObjectSE delegate, StringSE defaultListenerMethod) 指定されたデリゲートの新しいMessageListenerAdapter
を作成します。メソッドのサマリー
修飾子と型メソッド説明void
protected ObjectSE
extractMessage
(Message message) 指定された Redis メッセージからメッセージ本文を抽出します。protected StringSE
委譲先のデフォルトのリスナーメソッドの名前を返します。リッスンしているメッセージを委譲するターゲットオブジェクトを返します。protected StringSE
getListenerMethodName
(Message originalMessage, ObjectSE extractedMessage) 指定されたメッセージを処理することになっているリスナーメソッドの名前を決定します。protected void
リスナーの実行中に発生した特定の例外を処理します。protected void
アダプターの戦略のデフォルトの実装を初期化します。protected void
invokeListenerMethod
(StringSE methodName, ObjectSE[] arguments) 指定されたリスナーメソッドを呼び出します。void
標準の RedisMessageListener
エントリポイント。void
setDefaultListenerMethod
(StringSE defaultListenerMethod) 特定のリスナーメソッドが決定されていない場合に、委譲先のデフォルトリスナーメソッドの名前を指定します。void
setDelegate
(ObjectSE delegate) リスニングするメッセージを委譲するターゲットオブジェクトを設定します。void
setSerializer
(RedisSerializer<?> serializer) 受信 RAW Redis メッセージをリスナーメソッド引数に変換するシリアライザーを設定します。void
setStringSerializer
(RedisSerializer<StringSE> serializer) チャネル / パターンを文字列に変換するために使用されるシリアライザーを設定します。
フィールドの詳細
ORIGINAL_DEFAULT_LISTENER_METHOD
デフォルトのリスナーメソッド "handleMessage" のすぐに使える値。- 関連事項:
logger
サブクラスで利用可能なロガー
コンストラクターの詳細
MessageListenerAdapter
public MessageListenerAdapter()デフォルト設定で新しいMessageListenerAdapter
を作成します。MessageListenerAdapter
指定されたデリゲートの新しいMessageListenerAdapter
を作成します。- パラメーター:
delegate
- デリゲートオブジェクト
MessageListenerAdapter
指定されたデリゲートの新しいMessageListenerAdapter
を作成します。- パラメーター:
delegate
- デリゲートオブジェクトdefaultListenerMethod
- メッセージが来たときに呼び出すメソッド- 関連事項:
メソッドの詳細
setDelegate
リスニングするメッセージを委譲するターゲットオブジェクトを設定します。指定したリスナーメソッドは、このターゲットオブジェクトに存在する必要があります。明示的なデリゲートオブジェクトが指定されていない場合、リスナーメソッドは、このアダプターインスタンス(つまり、このアダプターのカスタムサブクラス)に存在し、リスナーメソッドを定義することが想定されています。
- パラメーター:
delegate
- デリゲートオブジェクト
getDelegate
リッスンしているメッセージを委譲するターゲットオブジェクトを返します。- 戻り値:
- メッセージリスニング代表団
setDefaultListenerMethod
特定のリスナーメソッドが決定されていない場合に、委譲先のデフォルトリスナーメソッドの名前を指定します。デフォルトの値は"handleMessage"
です。getDefaultListenerMethod
委譲先のデフォルトのリスナーメソッドの名前を返します。setSerializer
受信 RAW Redis メッセージをリスナーメソッド引数に変換するシリアライザーを設定します。デフォルトのコンバーターは
StringRedisSerializer
です。- パラメーター:
serializer
-
setStringSerializer
チャネル / パターンを文字列に変換するために使用されるシリアライザーを設定します。デフォルトのコンバーターは
StringRedisSerializer
です。- パラメーター:
serializer
-
afterPropertiesSet
public void afterPropertiesSet()- 次で指定:
- インターフェース
InitializingBean
のafterPropertiesSet
onMessage
標準の RedisMessageListener
エントリポイント。メッセージ引数を適切に変換して、メッセージをターゲットリスナメソッドに委譲します。例外の場合、
handleListenerException(Throwable)
メソッドが呼び出されます。- 次で指定:
- インターフェース
MessageListener
のonMessage
- パラメーター:
message
- 受信 Redis メッセージpattern
- チャネルに一致するパターン (指定されている場合) - null でもかまいません。- 関連事項:
initDefaultStrategies
protected void initDefaultStrategies()アダプターの戦略のデフォルトの実装を初期化します。handleListenerException
リスナーの実行中に発生した特定の例外を処理します。デフォルトの実装では、エラーレベルで例外が記録されます。- パラメーター:
ex
- 処理する例外
extractMessage
指定された Redis メッセージからメッセージ本文を抽出します。- パラメーター:
message
- RedisMessage
- 戻り値:
- メッセージの内容。引数としてリスナーメソッドに渡されます
getListenerMethodName
指定されたメッセージを処理することになっているリスナーメソッドの名前を決定します。デフォルトの実装は、構成されているデフォルトのリスナーメソッドがあれば、それを返すだけです。
- パラメーター:
originalMessage
- Redis リクエストメッセージextractedMessage
- 変換された Redis リクエストメッセージ。引数としてリスナーメソッドに渡されます- 戻り値:
- リスナーメソッドの名前 (非
null
) - 関連事項:
invokeListenerMethod
指定されたリスナーメソッドを呼び出します。- パラメーター:
methodName
- リスナーメソッドの名前arguments
- 渡されるメッセージ引数- 関連事項: