3

我在嘗試連接池與雲數據庫。據我所知,雲數據庫固有地使用默認參數max_connections = 6. max_connections code進行連接池。所需的代碼段是在線路130Cloudant - 連接池

我用阿卡-HTTP具有以下初始化用Scala編寫工作程序:

val client: CloudantClient = ClientBuilder.account(<accountdetails>) 
.username(<my user name>) 
.password(<my password>).maxConnections(20) 
.build() 
println("creating database") 
val db: Database = client.database("exampledb", false) 
println("created"); 

我的問題是我怎麼確認是否連接池的工作原理打算用於基本的獲取功能,讓我們說一個示例學生數據庫。

回答

2

我不認爲akka-http會影響到這裏,除非它取代java.netHttpURLConnectionCloudantClient使用java.net.HttpURLConnection類與Cloudant數據庫進行通信。默認情況下,由JVM提供HttpURLConnection的實現,如果添加了依賴關係,則由OkHttp提供。根據documentation for connection pooling,如果您使用可選的OkHttp客戶端,行爲會發生變化。如果您使用OkHttp依賴項,maxConnections method僅更改連接池大小。對於默認的HttpURLConnection,池大小由JVM屬性配置。

根據this documentation,可以爲java-cloudant客戶端啓用日誌記錄。由於池的使用對於客戶端代碼是透明的,如果您想驗證是否創建連接或從池中租用連接,您需要記錄底層的HttpURLConnection。有關默認HttpURLConnection的日誌字符串的更多信息,請參見this answer

如果您擔心池化是否正常工作,您可能還會找到關於this issue相關的討論。默認的JVM實現在非常短的空閒時間後清除池中的連接。

+0

感謝您的回覆。很抱歉,但沒有完全理解你。因此,如果我不包含Okhttp依賴項,連接池是否不起作用? 此外,我通過這個鏈接:https://gitlab.com/Guy1394/java-cloudant/tree/117-url-encode-session#connectoptions和我所瞭解的「資源共享」部分的內容,我認爲連接池應該可以工作。是不是? 感謝您的時間 – Tarun

+0

如果您不包含OkHttp,連接池仍然有效,但是它是否已啓用以及池的大小由JVM屬性'http.maxConnections'和'http.keepAlive'控制(請參閱此[參考](http://docs.oracle.com/javase/8/docs/technotes/guides/net/http-keepalive.html))而不是'ClientBuilder.maxConnections'方法。 – ricellis

+0

另外,您提供的gitlab鏈接是舊版本的分支。官方的java-cloudant回購是[here](https://github.com/cloudant/java-cloudant),幷包含javadoc的鏈接。 – ricellis