入站消息转换
到达通道适配器或网关的入站消息,将使用消息转换器转换为spring-messaging
Message<?>
有效负载。默认情况下,使用SimpleMessageConverter
,它处理 Java 序列化和文本。标题默认使用DefaultHeaderMapper.inboundMapper()
进行映射。如果发生转换错误,并且没有定义错误通道,则异常将抛出到容器并由侦听器容器的错误处理程序处理。默认错误处理程序将转换错误视为致命错误,并且消息将被拒绝(如果队列如此配置,则路由到死信交换)。如果定义了错误通道,则ErrorMessage
有效负载是带有属性failedMessage
(无法转换的 Spring AMQP 消息)和cause
的ListenerExecutionFailedException
。如果容器的AcknowledgeMode
为AUTO
(默认值)并且错误流在不抛出异常的情况下使用错误,则原始消息将被确认。如果错误流抛出异常,则异常类型与容器的错误处理程序一起将确定是否重新排队消息。如果容器配置为AcknowledgeMode.MANUAL
,则有效负载是带有附加属性channel
和deliveryTag
的ManualAckListenerExecutionFailedException
。这使错误流能够为消息调用basicAck
或basicNack
(或basicReject
),以控制其处置。