2013-10-16 97 views
3

我正在使用Datastax Java驅動程序。 有一個教程使用相同的。如何關閉數據庫連接Datastax Java驅動程序

我不明白的是如何關閉與cassandra的連接? 沒有可用的關閉方法,我假設我們不希望關閉會話,因爲它預計會是每個應用程序一個。

問候 拉夫

回答

1

看到這裏 - http://www.datastax.com/drivers....

驅動程序以異步方式使用連接。這意味着 多個請求可以在相同的連接上提交相同的 時間。這意味着驅動程序只需要維護一個相對於每個Cassandra主機的少量連接。這些選項 允許驅動程序控制準確保持多少個連接。

對於每個主機,驅動程序保持打開的所有 次通過調用確定的核心連接池。如果使用這些連接達到可配置閾值 ,則會創建更多連接,直至達到可配置的最大連接數。當池超過連接的 最大數目,在過量的連接被回收如果 使用打開的連接的下降到低於設定的閾值

這些參數的每個可以爲本地和遠程 主機(HostDistance)分別設置。對於IGNORED主機,所有這些 設置的默認值爲0,並且不能更改。

4

tl; dr在Session上調用shutdown是關閉連接的正確方法。

當您完成Cassandra時,您應該保持手頭有Session的物品並關閉它 - 這可能會持續很長時間。您可以在需要時以Session對象的形式獲取單個連接,並在完成時關閉它們,但理想情況下,應該只爲每個應用程序創建一個會話對象。會話是一個相當重量級的對象,它保持連接池到集羣中的節點池,因此創建多個會是低效率的(也是不必要的)(taken verbatim from advice given by Sylvain Lebresne on the mailing list)。如果忘記關閉會話(),他們會當您在Cluster實例調用shutdown被全部關閉......非常簡單的例子如下:

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

// Do something with session... 

session.shutdown(); 
cluster.shutdown(); 
+2

沒有任何'shutdown'方法在會議和集羣類。您必須使用它們的類的'close'方法.'session.close(); cluster.close();' –

+1

This has changed http://docs.datastax.com/en/drivers/python/3.2/_modules/cassandra/cluster.html#Session.shutdown && http://docs.datastax .COM/EN /司機/蟒蛇/ 3.2/_modules /卡桑德拉/ cluster.html#Cluster.shutdown –

相關問題