Spring 集成:如何调整所有传出错误消息

Spring integration: how to adjust all outgoing error messages

我需要调整返回给我的集成流调用者的所有错误消息,这样我就不会泄露信息,无论它们是作为异常抛出还是作为异步错误处理。我想避免在每个消息处理程序上定义自定义错误通道。 我尝试将转换器附加到默认错误通道,但没有成功:

@Bean
IntegrationFlow errorFlow() {
    return IntegrationFlows.from("errorChannel")
            .transform("{'status': 500, 'error': 'Internal Server Error'}")
            .get();
}

是否有一个可以转换所有传出错误消息的中心点?

根据您的逻辑,您似乎在处理 REST - request/reply。所以,你需要return回复请求点。这可以通过请求消息的 replyChannel header 获得。这样的信息你可以在MessagingException.failedMessage属性的payload中的ErrorMessage中获取。

总结一下您的 .transform() 必须期望 MessagingException 作为有效负载并通过从 failedMessage 复制 header 生成输出消息。这样消息就会被发送到 HTTP Inbound Gateway 请求消息的回复通道。