2015-12-02 37 views
0

嘿首次採用蒙戈副本集讀中學,我已經配置了一組在Java中3臺服務器。我試圖確定我的服務正在讀取哪個二級(使用次級首選)。 mongo驅動程序是否公開訪問Java中的這些信息? 因爲我正在努力尋找一種可靠的方式來跟蹤它。我也知道,一旦連接到輔助節點,除非發生故障,否則不可能切換到另一輔助節點讀取。MongoDB的:確定哪些正在從

+0

讓我們退後一步。爲什麼你想確定次要的讀取來自?我想不出一個用例,在這個用例中這是有道理的。請解釋原因,也許我們可以找到一個不同的,更優雅的解決方案。 –

+0

最近我們從我們的數據庫執行讀操作的服務中有一個磁盤故障導致它運行緩慢,從而次級服務開始落後於主服務器。據我所知,主要是暗示它已經死了,但它沒有拋出任何異常,並且服務持續保持與慢速服務器的連接。我打算設置服務來檢查optime延遲設置的時間間隔,如果服務器落後,強迫它刷新連接,並希望驅動程序將連接池中的慢速服務器刪除 – WillBroadbent

+0

我要如何複製測試中的問題我不確定,這是一個完全不同的故事。知道我在讀什麼服務器大部分都是這樣,當我開始測試時,我可以看到交換機是否發生了,而不是檢查rs.status()與主服務器的對比 – WillBroadbent

回答

0

可以使用getAdress方法如下圖所示,請參閱documentation瞭解更多詳情。

MongoClient mongoClient = new MongoClient("localhost", 27017); 
ServerAddress serverAdress = mongoClient.getAddress() 
+0

不幸的是,當我知道自己確實已經連接到次要服務器時,我會進行讀取,但是您知道任何方式來確定具體確定讀取源自哪個連接嗎? – WillBroadbent