如何关闭 Datastax Java Driver 的数据库连接。

5
我正在使用Datastax Java驱动程序,有一个教程可以使用。
我不理解的是,如何关闭与cassandra的连接?没有可用的close方法,我假设我们不想关闭Session,因为它期望每个应用程序只有一个。
问候, Gaurav
2个回答

5

小结:调用Session上的shutdown是关闭连接的正确方法。

你可以放心地保留一个Session对象,并在完成对Cassandra的操作后将其关闭 - 这可以是长期的。你可以根据需要以Session对象的形式获取个别连接,并在完成后关闭它们,但最好每个应用程序只创建一个Session对象。一个Session是一个相当重量级的对象,它保持着与集群中节点的池池连接,因此创建多个这样的对象将是低效(并且不必要的)(摘自Sylvain Lebresne在邮件列表上给出的建议)。如果您忘记关闭会话,它们将在调用Cluster实例上的shutdown时全部关闭... 下面是一个非常简单的示例:

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

// Do something with session... 

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

4
Session 和 Cluster 类中没有任何 shutdown 方法。您必须使用它们类的 close 方法。session.close(); cluster.close(); - Hosein Masbough
1
这个已经发生了变化:http://docs.datastax.com/en/drivers/python/3.2/_modules/cassandra/cluster.html#Session.shutdown && http://docs.datastax.com/en/drivers/python/3.2/_modules/cassandra/cluster.html#Cluster.shutdown - Derek Janni

1

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

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

对于每个主机,驱动程序始终保持一组核心连接,该组由调用{{core pool of connections}}确定。如果这些连接的使用达到可配置阈值{{configurable threshold}},则会创建更多连接,最多创建可配置的最大连接数。当池超过最大连接数时,如果打开连接的使用量低于已配置的阈值,则会回收超过的连接。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接