超时配置

更新时间:

在网络不稳定或服务响应较慢的情况下,合理设置超时时间能够有效防止请求长时间挂起,以及避免因服务不可用而导致的长时间等待,提升系统稳定性和响应效率。本文为您介绍在使用Java(异步)SDK过程中如何配置超时时间。

配置方式

说明

超时时间配置优先级为:RequestConfiguration配置 -> ClientOverrideConfiguration配置 -> HttpClient配置 -> 默认值,优先级依次降低。

方式一:使用默认配置

默认连接超时时间为10000毫秒,响应超时时间为20000毫秒。

方式二:通过RequestConfiguration配置

darabonba.core.RequestConfiguration requestConfiguration = darabonba.core.RequestConfiguration.create()
        .setConnectTimeout(java.time.Duration.ofMillis(10000))
        .setResponseTimeout(java.time.Duration.ofMillis(15000));

配置完成后,可以通过OpenAPI请求对象设置RequestConfiguration。例如,为SendSms配置连接超时时间和响应超时时间:

darabonba.core.RequestConfiguration requestConfiguration = darabonba.core.RequestConfiguration.create()
        .setConnectTimeout(java.time.Duration.ofMillis(10000))
        .setResponseTimeout(java.time.Duration.ofMillis(15000));

// SendSmsRequest为SendSms的请求对象,超时配置只对当前请求生效
SendSmsRequest sendSmsRequest = SendSmsRequest.builder()
        .requestConfiguration(requestConfiguration)
        .build();

方式三:通过ClientOverrideConfiguration配置

darabonba.core.client.ClientOverrideConfiguration clientOverrideConfiguration = darabonba.core.client.ClientOverrideConfiguration.create()
        .setConnectTimeout(Duration.ofMillis(10000))
        .setResponseTimeout(Duration.ofMillis(15000));

配置完成后,可以通过AsyncClient配置ClientOverrideConfiguration。

ClientOverrideConfiguration clientOverrideConfiguration = ClientOverrideConfiguration.create()
        .setConnectTimeout(Duration.ofMillis(10000))
        .setResponseTimeout(Duration.ofMillis(15000));

// 超时配置对所有通过该AsyncClient调用的请求都生效
AsyncClient client = AsyncClient.builder()
        .credentialsProvider(credentialProvider) // 本示例省略credentialProvider实现过程...
        .overrideConfiguration(clientOverrideConfiguration)
        .build();

方式四:通过HttpClient配置

// HttpClient Configuration
HttpClient httpClient = new ApacheAsyncHttpClientBuilder()
        .connectionTimeout(Duration.ofMillis(10000))
        .responseTimeout(Duration.ofMillis(20000))
        .build();

配置完成后,可以通过AsyncClient配置HttpClient。

// HttpClient Configuration
HttpClient httpClient = new ApacheAsyncHttpClientBuilder()
        .connectionTimeout(Duration.ofMillis(10000))
        .responseTimeout(Duration.ofMillis(20000))
        .build();

// 超时配置对所有通过该AsyncClient调用的请求都生效
AsyncClient client = AsyncClient.builder()
        .httpClient(httpClient)
        .credentialsProvider(credentialProvider) // 本示例省略credentialProvider实现过程...
        .build();