入站消息转换

到达通道适配器或网关的入站消息,会使用消息转换器转换为 spring-messagingMessage<?> 载荷。默认情况下,使用 SimpleMessageConverter,它处理 Java 序列化和文本。默认情况下,使用 DefaultHeaderMapper.inboundMapper() 映射消息头。如果发生转换错误且未定义错误通道,则异常会抛给容器并由监听器容器的错误处理器处理。默认的错误处理器会将转换错误视为致命错误,消息将被拒绝(如果队列配置了死信交换机,则会被路由到死信交换机)。如果定义了错误通道,则 ErrorMessage 载荷是一个 ListenerExecutionFailedException,其属性包括 failedMessage(无法转换的 Spring AMQP 消息)和 cause。如果容器的 AcknowledgeModeAUTO(默认值),并且错误流在不抛出异常的情况下处理了错误,则原始消息将被确认。如果错误流抛出异常,则异常类型与容器的错误处理器结合,将决定是否重新入队消息。如果容器配置为 AcknowledgeMode.MANUAL,则载荷是一个 ManualAckListenerExecutionFailedException,具有额外的属性 channeldeliveryTag。这使得错误流可以调用 basicAckbasicNack(或 basicReject)来处理消息,以控制其处置。

© . This site is unofficial and not affiliated with VMware.