|
如需使用最新稳定版本,请使用 Spring Integration 7.0.4! |
入站消息转换
传入消息到达通道适配器或网关后,会使用消息转换器将其转换为 spring-messaging Message<?> 有效负载。默认情况下,使用 SimpleMessageConverter,它处理 Java 序列化和文本。默认使用 DefaultHeaderMapper.inboundMapper() 映射标头。如果发生转换错误,且未定义错误通道,则异常将抛出到容器中,并由监听器容器的错误处理器处理。默认的错误处理程序将转换错误视为致命错误,消息将被拒绝(如果队列配置了死信交换器,则路由到死信交换器)。如果定义了错误通道,则 ErrorMessage 有效载荷是一个包含属性 failedMessage(无法转换的 Spring AMQP 消息)和 cause 的 ListenerExecutionFailedException。如果容器 AcknowledgeMode 为 AUTO(默认值),且错误流在不抛出异常的情况下消耗了错误,则原始消息将被确认。如果错误流抛出异常,则异常类型与容器的错误处理器共同决定消息是否重新入队。如果容器配置为 AcknowledgeMode.MANUAL,则有效载荷为 ManualAckListenerExecutionFailedException,并包含附加属性 channel 和 deliveryTag。这使得错误流能够调用 basicAck 或 basicNack(或 basicReject)来处理消息,以控制其处置方式。