Mongo连接验证

时间:2014-07-23 20:49:28

标签: java mongodb connect verification

这个问题现在被问了好几次,但我的问题非常具体,我没有看到它在论坛上被问到。

我们可以使用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();
        }

1 个答案:

答案 0 :(得分:0)

因此,我不会在您的问题中看到任何特定于语言或驱动程序的方面,所以我从db.getCollectionNames()开始,这是一个shell帮助程序http://docs.mongodb.org/manual/reference/method/db.getCollectionNames/

如果连接断开,它会失败,这是一个示例失败,您可以通过连接mongo shell然后终止数据库来测试:

2014-07-23T15:35:03.897-0700 DBClientCursor::init call() failed
2014-07-23T15:35:03.898-0700 Error: error doing query: failed at src/mongo/shell/query.js:81
2014-07-23T15:35:03.899-0700 trying reconnect to 127.0.0.1:27017 (127.0.0.1) failed
2014-07-23T15:35:03.899-0700 warning: Failed to connect to 127.0.0.1:27017, reason: errno:61 Connection refused
2014-07-23T15:35:03.899-0700 reconnect 127.0.0.1:27017 (127.0.0.1) failed failed couldn't connect to server 127.0.0.1:27017 (127.0.0.1), connection attempt failed

如果您询问代码中是否会引发异常,那就是特定于驱动程序的异常,因此您需要询问有关您正在编码的语言和您正在使用的驱动程序的信息。但是,它很可能会抛出异常(或等同于您的语言),因为它使用开放式连接向MongoDB发送命令,如果无法发送和接收响应,则会失败。

一般而言,这类问题很容易自行确定。写一些连接的测试代码,等待30秒,然后发出命令。启动MongoDB,运行你的脚本,在完成30秒之前杀死数据库。你有答案 -