如何在 QuestDB 中使用 HikariCP 而无需一直重置连接?

问题描述 投票:0回答:1

我正在尝试将 HikariCP JDBC 池与 QuestDB 一起使用,而不是像这样的 PostgreSQL:

public static void main(String[] args) {
    HikariConfig config = new HikariConfig();
    config.setJdbcUrl("jdbc:postgresql://localhost:8812/qdb");
    config.setUsername("admin");
    config.setPassword("quest");
    config.setMaxLifetime(60000);
    config.setMaximumPoolSize(10);

    // Create the DataSource
    HikariDataSource dataSource = new HikariDataSource(config);

    while (true) {
        // Use the DataSource to get a connection
        try (Connection connection = dataSource.getConnection();
             Statement statement = connection.createStatement();
             ResultSet resultSet = statement.executeQuery("SELECT now()")) {

            // Process the result
            while (resultSet.next()) {
                System.out.println(resultSet.getString(1));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        Os.sleep(10000);
    }
}

我的依赖项是

<dependency>
  <groupId>com.zaxxer</groupId>
  <artifactId>HikariCP</artifactId>
  <version>6.0.0</version>
</dependency>
<dependency>
  <groupId>org.postgresql</groupId>
  <artifactId>postgresql</artifactId>
  <version>42.7.3</version>
</dependency>

看起来工作正常,我可以查询数据库,但我在 QuestDB 日志中看到,59 秒后某些东西会关闭所有池连接,如下所示

2024-09-24T11:09:26.276729Z I pg-server connected [ip=127.0.0.1, fd=2241972929959]
...

2024-09-24T11:10:24.950787Z I pg-server scheduling disconnect [fd=2241972929959, reason=15]
2024-09-24T11:10:24.951148Z I pg-server disconnected [ip=127.0.0.1, fd=2241972929959, src=queue]

如何将 HikariCP 与 QuestDB 结合使用,以便池连接保持打开状态,并且仅从池中逐出关闭/无效的连接?

jdbc hikaricp questdb
1个回答
0
投票

它这样做是因为您配置了

config.setMaxLifetime(60000);
,它将连接的生命周期限制为 60 秒。这意味着 60 秒或更长时间前创建且当前未从池中检出的连接将自动关闭。对于对比,默认值为
1800000
(30 分钟)。

换句话说,删除

setMaxLifetime
设置,或者至少将其设置得更高。

© www.soinside.com 2019 - 2024. All rights reserved.