这个问题已经被问了一个巨大的时间,但我的问题是非常具体的,我没有看到它被问到在论坛上。Mongo连接验证
我们可以使用db.getCollectionNames()来验证连接吗?它确实会抛出MongoException?
谢谢。
编辑: 对不起。这是一个超级通用的问题。让我改述一下: 我正在使用Java驱动程序,我目前使用复制环境。将来我可能会有一个共享的环境。 我想要测试mongo连接。 getDBNames()或getCollectionNames()是否足够? 我也使用ensureOpen()来测试一般健康状况。
List<ServerAddress> addrs = mongoClient.getAllAddress();
if (CollectionUtils.isEmpty(addrs)) {
String message = "Unable to connect to mongo: " + this.toString();
LOGGER.error(message);
throw new MongoDbException(this.toString(), Error.MONGO_ERROR.setMessage(this.toString()));
}
for (ServerAddress addr : addrs) {
mongoClient.getConnector().getDBPortPool(addr).get().ensureOpen();
}
我看不到getCollectionNames()的调用 - –
任何向服务器发送查询/命令的方法都会在网络不可用时抛出连接异常。你通过这样做想达到什么目的?一项测试显示,在您检查时连接可能可用,但并不意味着当您最终需要使用该连接时它仍然有效(因此您仍然需要处理任何异常)。如果您想确保MongoDB服务器部署中的所有节点都正在运行,更好的方法是使用服务器监控解决方案,例如免费的MongoDB管理服务(MMS)监控(mms.mongodb.com)。 – Stennie