04

    技术2025-02-07  20

    有了连接池之后,获取连接是从连接池获取,没有足够连接时连接池会创建连接。这时,获取连接操作往往有两个超时时间: 一个是从连接池获取连接的最长等待时间,通常叫作请求超时connectRequestTimeout或等待超时connectWaitTimeout; 一个是连接池新建TCP 连接三次握手的连接超时,通常叫作连接超时connectTimeout。

    针对JedisPool、Apache HttpClient和Hikari数据库连接池,你知道如何设置这2个参数吗?

    假设我们希望设置连接超时5s,获取连接超时10s: hikari两个参数设置方式: spring.datasource.hikari.connection-timeout=10000 spring.datasource.url=jdbc:mysql://localhost:6657/common_mistakes?connectTimeout=5000&characterEncoding=UTF- 8&useSSL=false&rewriteBatchedStatements=true jedis两个参数设置: JedisPoolConfig config = new JedisPoolConfig(); config.setMaxWaitMillis(10000); try (JedisPool jedisPool = new JedisPool(config, "127.0.0.1", 6379, 5000); Jedis jedis = jedisPool.getResource()) { return jedis.set("test", "test"); } httpclient两个参数设置: RequestConfig requestConfig = RequestConfig.custom() .setConnectTimeout(5000) .setConnectionRequestTimeout(10000) .build(); HttpGet httpGet = new HttpGet("http://127.0.0.1:45678/twotimeoutconfig/test"); httpGet.setConfig(requestConfig); try (CloseableHttpResponse response = httpClient.execute(httpGet)) {...
    Processed: 0.010, SQL: 9