【发布时间】:2013-10-25 01:57:05
【问题描述】:
我正在使用 Datastax Java 驱动程序。 有一个使用相同的教程。
我不明白的是如何关闭与 cassandra 的连接? 没有可用的关闭方法,我假设我们不想关闭 Session,因为它预计每个应用程序都有一个。
问候 高拉夫
【问题讨论】:
标签: java cassandra datastax-java-driver datastax
我正在使用 Datastax Java 驱动程序。 有一个使用相同的教程。
我不明白的是如何关闭与 cassandra 的连接? 没有可用的关闭方法,我假设我们不想关闭 Session,因为它预计每个应用程序都有一个。
问候 高拉夫
【问题讨论】:
标签: java cassandra datastax-java-driver datastax
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();
请看这里 - http://www.datastax.com/drivers....
驱动程序以异步方式使用连接。意思是 可以在同一个连接上同时提交多个请求 时间。这意味着司机只需要保持一个相对的 每个 Cassandra 主机的少量连接。这些选项 允许驱动程序控制精确保留的连接数。
对于每个主机,驱动程序都会保持一个核心连接池完全打开 时间由调用决定。如果这些连接的使用达到 一个可配置的阈值,更多的连接被创建到 可配置的最大连接数。当池超过 最大连接数,如果超出的连接将被回收 打开的连接的使用低于配置的阈值
这些参数中的每一个都可以分别设置为 LOCAL 和 REMOTE 主机(主机距离)。对于 IGNORED 主机,所有这些主机的默认值 设置为 0,无法更改。
【讨论】: