簡體   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