0

我在我的项目中使用 Spring Integration。应用程序中使用的端点是入站网关、基于标头的路由器、转换器、拆分器、服务激活器。

在成功流程的情况下(没有任何异常),入站网关回复通道获得所需的响应,并且客户端得到该响应,这很好,但如果出现任何异常,我想发送自定义的错误响应,该响应无法按照我的方式工作要求。

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

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

<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 以防成功(无任何异常)。

我认为在 error-channel 的情况下,入站网关回复通道不起作用,但我不确定。

请帮助我配置错误通道。

4

1 回答 1

1

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

MessageBuilder.fromMessage(errorResponseMessage).copyHeadersIfAbsent(storedHeaders).build();
于 2013-05-03T14:48:17.373 回答