4

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

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

问候高拉夫

4

2 回答 2

4

tl; dr 调用shutdownSession关闭连接的正确方法。

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();
于 2013-10-16T19:46:00.657 回答
1

见这里 - http://www.datastax.com/drivers....

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

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

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

于 2013-10-16T19:45:39.863 回答