如何关闭Database Connection Datastax Java Driver

use*_*811 4 java cassandra datastax-java-driver datastax

我正在使用Datastax Java Driver.有一个使用相同的教程.

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

关心高拉夫

lor*_*can 5

tl; dr Calling shutdownon Session是关闭连接的正确方法.

Session当你完成Cassandra时,你应该安全地保留一个物体并关闭它 - 这可能是长寿的.您可以Session根据需要以对象的形式获取单个连接,并在完成时将其关闭,但理想情况下,您应该只为每个应用程序创建一个Session对象.Session是一个相当重量级的对象,它将连接池池保存到集群中的节点,因此创建多个这些池将是低效的(并且是不必要的)(从Sylvain Lebresne在邮件列表上给出的建议中逐字逐句).如果您忘记关闭会话,当您呼叫shutdown您的Cluster实例时,它们将全部关闭...下面是一个非常简单的示例:

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

// Do something with session... 

session.shutdown();
cluster.shutdown();
Run Code Online (Sandbox Code Playgroud)

  • 会话和集群类中没有任何`shutdown`方法.您必须使用其类的`close`方法.session.close(); cluster.close();` (3认同)

小智 1

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

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

对于每个主机,驱动程序通过调用确定始终保持核心连接池打开。如果这些连接的使用达到可配置的阈值,则会创建更多连接,最多可达可配置的最大连接数。当池中的连接数超过最大连接数时,如果打开的连接数低于配置的阈值,则多余的连接将被回收

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