Error handling Spring集成:如何使用错误通道在异常情况下向客户端发送响应包?

Error handling Spring集成:如何使用错误通道在异常情况下向客户端发送响应包?,error-handling,spring-integration,inbound,Error Handling,Spring Integration,Inbound,我在我的项目中使用Spring集成。 应用程序中使用的端点包括绑定网关、基于头的路由器、转换器、拆分器和服务激活器 在成功流的情况下(无任何异常),在绑定网关回复通道中获得所需的响应,客户端得到响应,这是正常的,但在任何异常的情况下,我希望发送定制的错误响应,这不符合我的要求 我使用错误通道来完成上述要求,但没有成功 请查找我的绑定网关、错误通道等配置。 我没有在配置中使用任何链 <int-http:inbound-gateway id="inboundGateway" suppo

我在我的项目中使用Spring集成。 应用程序中使用的端点包括绑定网关、基于头的路由器、转换器、拆分器和服务激活器

在成功流的情况下(无任何异常),在绑定网关回复通道中获得所需的响应,客户端得到响应,这是正常的,但在任何异常的情况下,我希望发送定制的错误响应,这不符合我的要求

我使用错误通道来完成上述要求,但没有成功

请查找我的绑定网关、错误通道等配置。 我没有在配置中使用任何链

<int-http:inbound-gateway id="inboundGateway"
    supported-methods="GET, POST" request-channel="requestChannel"
    path="/services/tylv/{requestParam}" reply-channel="responseChannel"
    error-channel="errorChannel">
</int-http:inbound-gateway>

<int:transformer ref="errorHandler"
 input-channel="errorChannel" method="generateErrorResponse"
 output-channel="responseChannel" />

<bean id="errorHandler"
    class="com.csam.wsc.enabling.integration.transformer.ErrorHandler" />

在异常情况下,com.csam.wsc.enabling.integration.transformer.ErrorHandler.generateErrorResponse(ErrorMessage)成功调用。此API处理异常,生成错误响应数据包,但不会发送到客户端,只发送HTTP状态代码200

理想情况下应该发送,因为转换器的输出通道是入站网关的应答通道,在成功的情况下,入站网关已经在发送应答数据包以及状态代码200(无任何异常)

我认为在错误通道的情况下,绑定网关回复通道不工作,但我不确定


请帮助我配置错误通道。

您应该在错误到达错误通道之前存储消息的标题,然后使用存储的标题创建新消息,并将新消息路由到响应通道

MessageBuilder.fromMessage(errorResponseMessage).copyHeadersIfAbsent(storedHeaders).build();

我必须确切地了解
ErrorHandler
的功能,但这看起来应该可以正常工作。我建议您打开
DEBUG
logging并通过流跟踪消息;发生的事情应该变得显而易见。