【发布时间】:2018-04-30 13:02:05
【问题描述】:
在我们的 Spring 应用程序中,我们依赖外部系统。 我们想为对该系统的请求设置超时,但不知道如何配置。
我们使用这个:
return clientBuilder.build()
.target(baseUrl)
.register(jsonProvider)
.register(jsonAcceptHeaderClientRequestFilter)
.register(new LoggingFilter());
我试过这个: How to set the connection and read timeout with Jersey 2.x? 和许多其他建议,但无法使其正常工作。任何建议将不胜感激。
更新不起作用的东西:
.property("http.connection.timeout", 1)
.property("http.receive.timeout", 1)
还有
.property(ClientProperties.CONNECT_TIMEOUT,1)
.property(ClientProperties.READ_TIMEOUT,1)
【问题讨论】:
-
它是否必须特定于
external system的请求?我知道您可以使用server.connection-timeout属性全局配置请求超时。见stackoverflow.com/questions/44274982/… -
这是否也会影响对我们系统的请求超时?
-
是的,很遗憾。我不知道通过请求设置超时的任何方法,因为它似乎是由嵌入式服务器 (Tomcat) 管理的,但其他地方可能有替代方法
-
嗯,按照那个 Jersey 超时链接上的建议,尝试
target(baseUrl).property(ClientProperties.CONNECT_TIMEOUT, 1)或target(baseUrl).property(ClientProperties.READ_TIMEOUT, 1)都会在本地导致javax.ws.rs.ProcessingException: java.net.SocketTimeoutException失败。不过,您似乎不太可能没有尝试过 - 感觉好像还有比上面的示例更多的事情? (这是使用 jersey-client-2.14)
标签: java spring restclientbuilder