繁体   English   中英

使用Java验证mongodb时,它花费了更多时间,并且在凭据错误的情况下抛出mongotimeoutException

[英]While authenticating mongodb using java it is taking more time and throwing mongotimeoutException in case of wrong credential

MongoClient m = new MongoClient(new ServerAddress("182.178.0.29",27017), 
        Arrays.asList(MongoCredential.createCredential("username", "employeedb", "password".toCharArray())));
MongoDatabase md = m.getDatabase("employeedb");
MongoIterable<String> strings = md.listCollectionNames();
MongoCursor<String> iterator = strings.iterator();  

身份验证后,我需要向最终用户显示消息。 但是,如果用户输入了错误的凭据,则异常会在30秒后出现。用户需要等待直到msg对话框出现。 您能否检查一下为什么要花费那么多时间,还有其他任何方法可以进行身份​​验证。

MongoDB版本:3.2.14 Java驱动程序版本:3.2.1

例外:

com.mongodb.MongoTimeoutException:等待30000毫秒后等待与ReadPreferenceServerSelector匹配的服务器

如果您知道身份验证失败的原因(您提到了错误的凭据),则可以使用serverSelectionTimeout属性自定义身份验证失败的超时时间,以便可以快速向用户显示失败的身份验证。 更多的解释可以在MongoDB的网站可以看到这里

serverSelectionTimeoutMS变量提供了驱动程序在放弃并引发错误之前应该允许服务器选择的时间(以毫秒为单位)。 用户可以根据自己的喜好还是快速将错误返回给用户(例如“鲸鱼”网页)来将其设置为较高或较低。 默认值为30秒,这足以在故障转移期间进行典型的新主选举。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM