我正在使用Datastax Java Driver。 有一个教程可以使用它。
我不明白的是如何关闭与cassandra的连接? 没有可用的密切方法,我认为我们不希望关闭Session,因为它预期是每个应用程序一个。
此致 拉夫
答案 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且无法更改。