gpt4 book ai didi

error-handling - Spring 集成 : How to send response packet to client in case of exception using error-channel?

转载 作者:行者123 更新时间:2023-12-03 08:33:39 25 4
gpt4 key购买 nike

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

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

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

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

<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发送。

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

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

请帮助我配置错误 channel 。

最佳答案

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

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

关于error-handling - Spring 集成 : How to send response packet to client in case of exception using error-channel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16352216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com