原文保持更新及BUG修正:http://kweny.io/mongodb-clien...java
基於 MongoDB Java Driver 3.8.1 的客戶端配置選項,其它驅動大同小異。git
java.lang.String
github
客戶端的描述。該描述用於日誌記錄和 JMX 等位置。算法
默認爲 null。mongodb
java.lang.String
Server Version: 3.4
segmentfault
應用程序的邏輯名稱。客戶端能夠據此標識應用程序服務器,用於服務器日誌、慢查詢日誌及概要收集。安全
默認爲 null。服務器
int
網絡
每一個主機的最小鏈接數,這些鏈接在空閒時將保持在鏈接池中。併發
默認爲 0,不能小於 0。
int
每一個主機容許的最大鏈接數,這些鏈接在空閒時將保持在鏈接池中。當鏈接池耗盡後,任何須要鏈接的操做都將被阻塞並等待可用鏈接。
默認爲 100,不能小於 1。
int
容許阻塞的鏈接線程數乘數。該值和 maxConnectionsPerHost 相乘的結果就是鏈接等待隊列的最大值,超出的線程將當即拋出異常。
如該值爲 5,maxConnectionsPerHost 爲 10,則最多能夠同時有 50 個線程等待鏈接。
默認爲 5,不能小於 1。
int
線程從鏈接池中獲取可用鏈接的最長等待時間(毫秒)。
默認爲 120,000(120秒),0 表示不等待,負值意味着無限期等待。
int
鏈接池中鏈接的最大空閒時間(毫秒)。超出空閒時間的鏈接將被關閉,並在必要時由新建鏈接替換。
默認爲 0,表示無限制,不能小於 0。
int
鏈接池中鏈接的最大使用壽命(毫秒)。超出使用壽命的鏈接將被關閉,並在必要時由新建鏈接替換。
默認爲 0,表示無限制,不能小於 0。
int
鏈接超時時間(毫秒),僅在新建鏈接時使用。
默認爲 10,000(10秒),0 表示無限制,不能小於 0。
int
socket 超時時間(毫秒),用於 I/O 讀寫操做。
默認爲 0,表示無限制。
boolean
是否啓用 socket 的 keep-alive 功能。
該選項從 MongoDB Java Driver 3.5.0 版開始已經廢棄,如今默認值爲 true,不建議禁用。
int
心跳檢測頻率(毫秒)。該選項用於設定驅動程序每次嘗試肯定每一個服務器當前狀態的間隔時間。
默認爲 10,000(10秒)。
int
心跳檢測的最小頻率(毫秒)。若是驅動程序須要常常檢查服務器的可用性,那麼距離上次檢測至少等待這麼長時間,以免資源浪費。
默認爲 500。
int
用於心跳檢測的鏈接超時時間(毫秒)。
默認爲 20,000(20秒)。
int
用於心跳檢測的 socket 超時時間(毫秒)。
默認爲 20,000(20秒)。
boolean
Server Version: 3.6
設定當因爲網絡錯誤而寫入失敗時,是否進行重試。
boolean
是否啓用 SSL。
在未設置 socket factory 的狀況下,設置該選項時將同時設置默認的 socket factory,true 時爲 java.net.ssl.SSLSocketFactory.getDefault()
,false 時爲 javax.net.SocketFactory.getDefault()
。
開啓該選項時,若是設置其它 socket factory,則該 factory 必須建立 java.net.ssl.SSLSocket
的實例,不然將拒絕鏈接。
默認爲 false,不啓用。
boolean
啓用 SSL 時是否容許無效的主機名(證書域名檢查)。true 爲容許,即關閉域名檢查。
設爲 true(容許無效主機名)將使應用程序容易受到中間人攻擊。
注意,證書域名檢查須要 Java 7 及以上版本,若是應用程序使用了 SSL 運行在 Java 6 上,則必須將該選項設爲 true(關閉域名檢查)。
默認爲 false,即開啓域名檢查,不容許無效的主機名。
javax.net.SocketFactory
用於創建 socket 的工廠。
默認爲 javax.net.SocketFactory.getDefault()
。
javax.net.ssl.SSLContext
啓用 SSL 時使用的 SSLContext,當 sslEnabled 爲 false 或指定了 socket factory 時,將忽略此選項。
java.lang.String
指定必須的副本集名稱。確保鏈接的全部節點都屬於一個指定的副本集。
設置該選項後,客戶端將進行如下行爲——
默認爲 null。
int
用於服務器選擇的一個參考閾值,單位爲毫秒。若是對於某個操做存在多個合適的服務器,則以該選項的值來肯定一個基於延遲時間(RTT)的延遲窗口範圍(Latency Window)。以延遲最小的服務器爲基準(最小延遲時間),全部延遲時間和最小延遲時間的差值小於該值的服務器,都有資格被隨機選中。
若是該參數設爲 0,則不使用隨機算法,而是選擇延遲時間最小的服務器。
默認爲 15 毫秒,意味着全部有資格被選中的服務器之間的延遲時間只有 15 毫秒之內的差別。
com.mongodb.selector.ServerSelector
服務器選擇器。用於加強標準的服務器選擇規則。
在執行該選擇器篩選出符合要求的服務器列表後,驅動程序將繼續執行如下兩個選擇操做——
要跳過基於延遲窗口的選擇,可使用如下方法——
int
服務器選擇的超時時間(毫秒),指定驅動程序從集羣中選擇服務器時,沒法成功而放棄並拋出異常的時間。能夠根據須要(如耐心等待或快速返回錯誤)來設置該參數的值。
默認爲 30,000(30秒),這個時間對於在經典的故障恢復階段中選舉出新的主節點來講已經足夠。0 表示無可用服務器,將當即超時;負值意味着無限期等待。
boolean
設置驅動程序註冊的 JMX Beans 是否始終爲 MBeans,不管 VM 是否是 Java 6 及更高版本。
當該選項爲 false 時,驅動程序將在 Java 6 或更高版本時使用 MXBeans;Java 5 中使用 MBeans。
默認爲 false。
java.util.List<com.mongodb.MongoCompressor>
Server Version: 3.4
用於向 MongoDB 服務器收發消息的壓縮器列表。驅動程序將使用服務器配置支持的列表中的第一個壓縮器。
默認爲空列表。
com.mongodb.WriteConcern
寫入策略,用於控制寫入安全的級別,以保障寫操做的可靠性。可選配置以下——
w - 該選項要求寫入確認操做已經傳遞到指定數量的節點或指定標籤的節點。有如下可選值——
w:-1 (error ignored)
級別,基本和 w:0
差很少,不一樣的是 w:0
對於網絡錯誤會返回異常,而 w:-1
不會捕獲任何異常。>=2
的數字,如 w:3
表示至少要有 3 個節點有數據。w:2
同樣,secondary 節點從 primary 節點完成數據複製後返回響應。不一樣的是這裏並不指定具體的節點數量,而是使用 majority
表示「大多數」,即超過一半(>1/2
)的節點數。w
值大於 1 時生效。數據須要寫入指定數量的節點纔算成功,但若是有節點發生故障,可能致使這個數量沒法達到,從而沒法進行響應,經過設定這個超時時間,能夠防止寫入操做被無限制阻塞。該參數能夠設置爲 0,表示無限期。默認爲 w:1(com.mongodb.WriteConcern.ACKNOWLEDGED
)。
com.mongodb.ReadConcern
Server Version: 3.2
讀取策略(隔離級別),決定集羣環境中如何返回數據——
Server Version: 3.4
版本引入。和 majority 相似,但修復了 majority 的一些 bug,但比 majority 在性能上的損耗更大。linearizable 對於同一文檔的併發讀、寫操做時線性的。Server Version: 4.0
版本引入。MongoDB 從 4.0 開始支持副本集多文檔事務,同時提供了 snapshot 隔離級別,在事務開始時建立一個 WiredTiger snapshot(快照),保存當時整個引擎全部事務的狀態,肯定哪些事務對當前可見,哪些不可見,而後在整個事務過程當中使用這個快照提供事務讀。該選項可用於解決「髒讀」的問題,如從 primary 節點上讀取了某條數據,但這條數據並無同步到大多數節點,而後 primary 節點故障,從新恢復後 primary 節點會將未同步到大多數節點的數據回滾掉,致使以前讀取的數據成了「髒數據」。
而將 readConcern 的級別設置爲 majority
,則能夠保證讀取到的數據已經寫入大多數節點,這些數據不會發生回滾,也就避免了「髒讀」的問題。須要注意的是,該級別能保證讀取到的數據不會發生回滾,但並不能保證讀到的數據是最新的。
該選項能夠和 readPreference 配合使用。
com.mongodb.ReadPreference
用於查詢、Map-Reduce、聚合、計數的讀取首選項。
MongoDB 有 5 種 ReadPreference 模式——
默認爲 primary(com.mongodb.ReadPreference.primary()
)。
boolean
是否啓用遊標的 finalize 方法,用於清理客戶端未關閉的 DBCursor 實例。
若是可以確保每次都會調用 DBCursor 的 close 方法,則能夠關閉該選項(設爲 false)。
默認爲 true。
org.bson.codecs.configuration.CodecRegistry
編解碼器註冊表。編解碼器用於對 Document 進行編碼和解碼。
com.mongodb.DBEncoderFactory
編碼器工廠。
默認使用驅動程序的標準配置。
com.mongodb.DBDecoderFactory
解碼器工廠。
默認使用驅動程序的標準配置。
java.util.List<com.mongodb.event.CommandListener>
命令事件監聽器集合。
默認爲空列表。
java.util.List<com.mongodb.event.ClusterListener>
與集羣相關的事件監聽器集合。
默認爲空列表。
java.util.List<com.mongodb.event.ConnectionPoolListener>
與鏈接池相關的事件監聽器集合。
默認爲空列表。
java.util.List<com.mongodb.event.ServerListener>
與服務器相關的事件監聽器集合。
默認爲空列表。
java.util.List<com.mongodb.event.ServerMonitorListener>
與服務器監控相關的事件監聽器集合。
默認爲空列表。
本文版權屬於 K棧。歡迎註明出處轉載本文。本文連接:http://kweny.io/mongodb-clien...
若是您喜歡個人文章,能夠在如下平臺關注我——