受信メッセージの変換

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