2015-12-02 70 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