将泽西客户端与 Apache 连接器一起使用,超时不起作用



我正在使用Jersey client实现一个Restful客户端,如下所示:

ClientConfig clientConfig = new ClientConfig();
clientConfig.property(ClientProperties.CONNECT_TIMEOUT, 60000);
clientConfig.property(ClientProperties.READ_TIMEOUT, 60000);
Client client = ClientBuilder.newClient(clientConfig);

这段代码一直工作正常,只要请求时间超过定义的值,就会正确抛出超时异常。然而,当我决定切换到使用ApacheConnector如下:

ClientConfig clientConfig = new ClientConfig();    
clientConfig.register(JacksonFeature.class);       
PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
clientConfig.property(ApacheClientProperties.CONNECTION_MANAGER, connectionManager);
ApacheConnectorProvider provider = new ApacheConnectorProvider();        
clientConfig.connectorProvider(provider);
clientConfig.property(ClientProperties.CONNECT_TIMEOUT, 60000);
clientConfig.property(ClientProperties.READ_TIMEOUT, 60000);
Client client = ClientBuilder.newClient(clientConfig);

超时似乎不再工作了,所以现在当服务器响应失败时,我的客户端将一直等待,直到永远不会抛出超时异常。

有没有人遇到过这个问题,或者知道我在这里做错了什么吗?由于

尝试创建和注册一个org.apache.http.client.config.RequestConfig:

clientConfig.property(ApacheClientProperties.REQUEST_CONFIG, RequestConfig.custom()
  .setConnectTimeout(60000)
  .setSocketTimeout(60000)
  .build());
RequestConfig reqConfig = RequestConfig.custom()
        .setConnectionRequestTimeout(time_out_value).build();

最新更新