如何关闭数据库连接 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 集群时出错