受信メッセージの変換

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