如何关闭Database Connection Datastax Java Driver

时间:2013-10-16 19:31:29

标签: java cassandra datastax-java-driver datastax

我正在使用Datastax Java Driver。 有一个教程可以使用它。

我不明白的是如何关闭与cassandra的连接? 没有可用的密切方法,我认为我们不希望关闭Session,因为它预期是每个应用程序一个。

此致 拉夫

2 个答案:

答案 0 :(得分:5)

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

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

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

// Do something with session... 

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

答案 1 :(得分:1)

请参阅此处 - http://www.datastax.com/drivers....

  

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

     

对于每个主机,驱动程序保持核心连接池打开   通过呼叫确定的时间。如果使用这些连接到达   一个可配置的阈值,创建了更多的连接   可配置的最大连接数。当游泳池超过   最大连接数,超过的连接将被回收   打开的连接的使用低于配置的阈值

     

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