受信メッセージの変換

チャネルアダプターまたはゲートウェイに到着した受信メッセージは、メッセージコンバーターを使用して spring-messaging Message<?> ペイロードに変換されます。デフォルトでは、java 直列化とテキストを処理する SimpleMessageConverter が使用されます。ヘッダーは、デフォルトでは DefaultHeaderMapper.inboundMapper() を使用してマッピングされます。変換エラーが発生し、エラーチャネルが定義されていない場合、例外がコンテナーにスローされ、リスナーコンテナーのエラーハンドラーによって処理されます。デフォルトのエラーハンドラーは、変換エラーを致命的として扱い、メッセージは拒否されます (キューがそのように構成されている場合は、デッドレター交換にルーティングされます)。エラーチャネルが定義されている場合、ErrorMessage ペイロードは、プロパティ failedMessage (変換できなかった Spring AMQP メッセージ) と cause を持つ ListenerExecutionFailedException になります。コンテナー AcknowledgeMode が AUTO (デフォルト) であり、エラーフローが例外をスローせずにエラーを処理する場合、元のメッセージが確認応答されます。エラーフローで例外が発生した場合、例外型とコンテナーのエラーハンドラーによって、メッセージが再キューイングされるかどうかが決定されます。コンテナーが AcknowledgeMode.MANUAL で構成されている場合、ペイロードは追加プロパティ channel と deliveryTag を持つ ManualAckListenerExecutionFailedException になります。これにより、エラーフローはメッセージに対して basicAck または basicNack (あるいは basicReject) を呼び出し、その処理を制御できます。