[英]MongoTimeoutException with Java. No changes before getting the issue
我正面临这个问题:
com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting for a server that matches com.mongodb.Mongo$4@11ad6cd. Client view of cluster state is {type=REPLICA_SET, servers=[{address=bastaproject-shard-00-01-vo5a5.gcp.mongodb.net:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketReadException: Prematurely reached end of stream}}, {address=bastaproject-shard-00-00-vo5a5.gcp.mongodb.net:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketReadException: Prematurely reached end of stream}}, {address=bastaproject-shard-00-02-vo5a5.gcp.mongodb.net:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketReadException: Prematurely reached end of stream}}]
at com.mongodb.connection.BaseCluster.createTimeoutException(BaseCluster.java:389)
at com.mongodb.connection.BaseCluster.selectServer(BaseCluster.java:108)
at com.mongodb.Mongo.getConnectedClusterDescription(Mongo.java:887)
at com.mongodb.Mongo.createClientSession(Mongo.java:877)
at com.mongodb.Mongo$3.getClientSession(Mongo.java:866)
at com.mongodb.Mongo$3.execute(Mongo.java:823)
at com.mongodb.MongoCollectionImpl.executeCount(MongoCollectionImpl.java:215)
at com.mongodb.MongoCollectionImpl.count(MongoCollectionImpl.java:183)
at com.mongodb.MongoCollectionImpl.count(MongoCollectionImpl.java:178)
at basta.telegram.MongoDAO.subscribed(MongoDAO.java:31)
at basta.telegram.BastaBot.onUpdateReceived(BastaBot.java:55)
at java.util.ArrayList.forEach(ArrayList.java:1249)
at org.telegram.telegrambots.generics.LongPollingBot.onUpdatesReceived(LongPollingBot.java:27)
at org.telegram.telegrambots.updatesreceivers.DefaultBotSession$HandlerThread.run(DefaultBotSession.java:309)
我能够连接数据库并获取文档,但现在我不能。 在收到此错误之前,我没有在代码中进行任何更改。
这是我用来获取 collections 的代码:
MongoCollection<Document> collection = conexion.getDatabase().getCollection("users");
这是连接方法:
MongoClientURI uri = new MongoClientURI(
"mongodb+srv://cagide_j:"mypassword"@bastaproject-vo5a5.gcp.mongodb.net/test?retryWrites=true&w=majority");
this.mongoClient = new MongoClient(uri);
this.database = mongoClient.getDatabase("bastaProject");
确保您的 Mongo 数据库服务器正在运行,并且如果 Mongo 正在另一台机器上运行(看起来是这样),那么您已连接到 Internet。 我不熟悉 mongo.net,但许多数据库即服务或云数据库服务具有仅允许连接白名单的 IP 地址的功能。 我已经看到突然无法连接的动态 IP 地址问题。 您也可以尝试增加超时。
如果没有更完整的代码,很难说更多。
我经常发现这些问题很简单,但不一定很容易找到。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.