Http Inbound Gateway需要2x超时才能向客户端发送超时响应

时间:2015-11-20 11:17:35

标签: spring-integration

我们正在使用http入站网关来处理http请求。最近,我们想要设置特定的http响应代码,该代码将在超时后发送给用户。 我们已升级到spring 4.2.1并设置

  

reply-timeout-status-code-expression属性

它现在正在工作。

但是存在一个问题:如果我们将超时设置为10秒,则在10秒后在Web应用程序中引发ReplyTimeoutException,但响应在20秒后到达客户端(恰好是双倍)。

我们多次更改了超时,但客户端收到的响应总是需要2x超时。

这是http入站网关的xml配置:

<int-http:inbound-gateway id="inboundRequest" request-channel="inbound-channel" 
         supported-methods="POST" path="/Request" error-channel="errorChannel" reply-channel="gateway_response"
        reply-timeout="5000" request-payload-type="java.lang.String" reply-timeout-status-code-expression="'504'" >

非常感谢帮助

1 个答案:

答案 0 :(得分:1)

我看到你有一个error-channel - 如果错误流没有返回响应,当错误流程结束时我们会再次启动应答计时器(我们正在等待错误流程的回复)。

您需要抛出MessageTimeoutException

,而不是从错误流中返回任何内容

启用DEBUG日志记录并遵循消息流是诊断此类问题的最佳方法。

如果这不是问题,您需要显示其余配置(编辑问题,不要尝试在评论中发布)。