在Spring Rest Template中设置超时

Saj*_*ena 1 java rest spring web-services

应用程序使用Spring rest模板来调用webservice,我使用
restTemplate.exchage(url)来调用webservice.目前我们没有为此webservice调用传递任何超时值,如何为Spring Rest模板设置超时值.

Bal*_*ngh 6

您可以使用类似于以下的代码来设置连接超时:

RestTemplate restTemplate = new RestTemplate();
((SimpleClientHttpRequestFactory)restTemplate.getRequestFactory()).setConnectTimeout(2000);
Run Code Online (Sandbox Code Playgroud)

如果您希望设置读取超时,则可以使用类似以下的代码:

((SimpleClientHttpRequestFactory)restTemplate.getRequestFactory()).setReadTimeout(2000);
Run Code Online (Sandbox Code Playgroud)

这里的时间以毫秒为单位.有关详细信息,请访问文档页面.


rea*_*lPK 5

从 Spring 1.4 开始引入的 RestTemplateBuilder 可用于设置 RestTemplate 对象的读取和连接超时设置。这是示例代码 -

final RestTemplate restTemplate =
    new RestTemplateBuilder()
        .setConnectTimeout(Duration.ofMillis(connectTimeoutMillis))
        .setReadTimeout(Duration.ofMillis(readTimeoutMillis))
        .build();
Run Code Online (Sandbox Code Playgroud)