我们正在使用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'" >
非常感谢帮助
答案 0 :(得分:1)
我看到你有一个error-channel
- 如果错误流没有返回响应,当错误流程结束时我们会再次启动应答计时器(我们正在等待错误流程的回复)。
您需要抛出MessageTimeoutException
。
启用DEBUG日志记录并遵循消息流是诊断此类问题的最佳方法。
如果这不是问题,您需要显示其余配置(编辑问题,不要尝试在评论中发布)。