如何关闭数据库连接 Datastax Java 驱动程序

Posted

技术标签:

【中文标题】如何关闭数据库连接 Datastax Java 驱动程序【英文标题】:How do I close Database Connection Datastax Java Driver 【发布时间】:2013-10-25 01:57:05 【问题描述】:

我正在使用 Datastax Java 驱动程序。 有一个使用相同的教程。

我不明白的是如何关闭与 cassandra 的连接? 没有可用的关闭方法,我假设我们不想关闭 Session,因为它预计每个应用程序都有一个。

问候 高拉夫

【问题讨论】:

【参考方案1】:

tl;dr 在Session 上调用shutdown 是关闭连接的正确方法。

您应该安全地将 Session 对象放在手边,并在完成 Cassandra 后将其关闭 - 这可以长期存在。您可以根据需要以Session 对象的形式获取单独的连接,并在完成后将其关闭,但理想情况下,您应该只为每个应用程序创建一个 Session 对象。 Session 是一个相当重量级的对象,它保持与集群中节点的连接池池,因此创建多个连接池将是低效的(并且是不必要的)(taken verbatim from advice given by Sylvain Lebresne on the mailing list)。如果您忘记关闭会话,当您在 shutdown 实例上调用 shutdown 时,它们将全部关闭...下面是非常简单的示例:

Cluster cluster = Cluster.builder().addContactPoints(host).withPort(port).build();
Session session = cluster.connect(keyspace);

// Do something with session... 

session.shutdown();
cluster.shutdown();

【讨论】:

会话类和集群类中没有shutdown方法。必须使用它们类的close方法。session.close(); cluster.close(); 这已经改变docs.datastax.com/en/drivers/python/3.2/_modules/cassandra/… && docs.datastax.com/en/drivers/python/3.2/_modules/cassandra/…【参考方案2】:

请看这里 - http://www.datastax.com/drivers....

驱动程序以异步方式使用连接。意思是 可以在同一个连接上同时提交多个请求 时间。这意味着司机只需要保持一个相对的 每个 Cassandra 主机的少量连接。这些选项 允许驱动程序控制精确保留的连接数。

对于每个主机,驱动程序都会保持一个核心连接池完全打开 时间由调用决定。如果这些连接的使用达到 一个可配置的阈值,更多的连接被创建到 可配置的最大连接数。当池超过 最大连接数,如果超出的连接将被回收 打开的连接的使用低于配置的阈值

这些参数中的每一个都可以分别设置为 LOCAL 和 REMOTE 主机(主机距离)。对于 IGNORED 主机,所有这些主机的默认值 设置为 0,无法更改。

【讨论】:

以上是关于如何关闭数据库连接 Datastax Java 驱动程序的主要内容,如果未能解决你的问题,请参考以下文章

与 Datastax Astra DB 连接后如何维护响应中的数据类型?

在上一个主机被 Datastax Java 驱动程序关闭后,Cassandra 重新连接到下一个主机的尝试

Cassandra/Datastax:如何在 java 中获取具有列表数据类型的列的值

从 c#datastax 驱动程序关闭 cassandra 集群时出错

如何在 DataStax Enterprise 上使用 Stargate 获取数据

如何允许在 cassandra 中使用 java datastax 进行过滤