当前位置: 首页 > 知识库问答 >
问题:

com.mongodb.MongoTimeout异常:等待连接时在30000 ms后超时。群集状态的客户端视图为{type=UNKNOWN,服务器=[]

白吕恭
2023-03-14

我们试图连接到蒙戈阿特拉斯从Java代码使用

URI“mongodb srv::@serveraddress/dbname?retryWrites=true

奇怪的是,这里的异常跟踪服务器=[]列表为空。

这个错误的可能原因是什么?

MongoDB服务器和Java驱动程序详细信息:

MongoDB服务器:4.2

MongoDB java驱动程序:3.12.5

spring数据mongodb:2.1.5。释放

如果需要进一步的信息,请告诉我。

谢谢你的帮助。

com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting to connect. Client view of cluster state is {type=UNKNOWN, servers=[]
    at com.mongodb.internal.connection.BaseCluster.getDescription(BaseCluster.java:182)
    at com.mongodb.internal.connection.AbstractMultiServerCluster.getDescription(AbstractMultiServerCluster.java:54)
    at com.mongodb.client.internal.MongoClientDelegate.getConnectedClusterDescription(MongoClientDelegate.java:152)
    at com.mongodb.client.internal.MongoClientDelegate.createClientSession(MongoClientDelegate.java:103)
    at com.mongodb.Mongo.createClientSession(Mongo.java:832)
    at com.mongodb.MongoClient.startSession(MongoClient.java:582)
    at com.mongodb.MongoClient.startSession(MongoClient.java:569)
    at com.shutterfly.services.project.InitMongoDBCollection.onApplicationEvent(InitMongoDBCollection.java:36)
    at com.shutterfly.services.project.InitMongoDBCollection.onApplicationEvent(InitMongoDBCollection.java:20)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:402)
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:359)
    at org.springframework.boot.context.event.EventPublishingRunListener.running(EventPublishingRunListener.java:105)
    at org.springframework.boot.SpringApplicationRunListeners.running(SpringApplicationRunListeners.java:78)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:332)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1260)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1248)
    at com.shutterfly.services.project.Application.main(Application.java:18)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:53)
    at java.lang.Thread.run(Thread.java:748)

共有3个答案

翟元凯
2023-03-14

所以我有同样的问题我修复它通过这个代码使用这个导入

        import com.mongodb.client.MongoClient;

这就是代码

        String web="mongodb://";
        MongoClient mongoClient = MongoClients.create(web+ENVIRONMENT);
        database = mongoClient.getDatabase("PUT_HERE_YOUR_DB_NAME");

也许在某个地方你需要改变网络

      String web="mongodb+srv://"
萧宏峻
2023-03-14

添加答案,以便对其他人有所帮助,他们将来可能会看到类似的问题。

我们已经解决了这个问题,问题是需要时间来找到集群的列表,并连接到默认时间,我们可以使用"MongoClientOptionsFactoryBean"来自定义参数,并可以覆盖默认配置。

@Bean
public MongoClientOptionsFactoryBean getMongoClientOptionsFactoryBean() {
        MongoClientOptionsFactoryBean mongoClientOptionsFactoryBean = new MongoClientOptionsFactoryBean();
        mongoClientOptionsFactoryBean.setConnectTimeout(timeout);
        mongoClientOptionsFactoryBean.setConnectionsPerHost(connectionsPerHost);
        mongoClientOptionsFactoryBean.setMaxWaitTime(maxWaitTime);
        mongoClientOptionsFactoryBean.setServerSelectionTimeout(ServerSelectionTimeout);
        mongoClientOptionsFactoryBean.setThreadsAllowedToBlockForConnectionMultiplier(connMultiplier);
        return mongoClientOptionsFactoryBean;
    }
祁修诚
2023-03-14

在我的情况下,mongo根本没有运行:)

请检查:

systemctl status mongod.service

并确保在重新启动服务器之前已启用:

systemctl enable mongod.service
 类似资料:
  • 我正在mongo服务器上尝试简单的CRUD,我得到了这个 MongotieOutException:在等待与WritableServerSelector匹配的服务器时,在30000 ms后超时。群集状态的客户端视图为{type=replica_set,servers=[{address=mongod.mydomain.com:27017,type=replica_set_secondary,rou

  • 当我尝试使用套接字将物理设备连接到服务器时,我遇到了一个问题。在服务器端,它似乎不接受任何连接,而在客户端,套接字超时。你知道为什么会这样吗? 我在下面提供我的代码 服务器代码: 客户端: 11-16 23:32:11.016:W/系统。错误(24213):java.net。ConnectException:无法连接到/192.168.1.116(端口9090):连接失败:ETIMEDOUT(连接

  • 我正在尝试使用hazelcast v3。2.4(服务器和客户端上的版本相同)。服务器(我可以安装的简单实现)正在服务器上运行。客户端尝试连接到远程服务器-服务器打印身份验证请求,但我收到以下日志输出(包括异常)-关于我可以做什么不同的想法(复制日志输出和配置文件)。我正在尝试通过TCP/IP进行连接,我检查了网络连接——我没有看到任何东西阻止连接。 堆栈中提到的代码行: 配置 日志输出 服务器输出

  • 问题内容: 我在ElastiCache上运行Redis集群。 多个进程连接到Redis集群。每个进程都位于Docker容器中。流程不尽相同-我有一个流程,一个流程等。 正常运行几天后,连接到Redis时,我的某些进程开始超时。当我进入受影响的容器并尝试通过到达群集时,与群集的连接超时。这告诉我,问题不仅影响过程,而且影响整个容器。 当我从任何其他容器中使用时,连接都不会出现问题。 我的进程会根据需

  • 我在Xdebug日志中不断收到此错误: 连接到客户端超时(等待:200毫秒)。:-( PhpStorm中的调试器根本不工作。 我的PHP Ini: 注销:

  • 我正在尝试访问具有客户端证书的url,并使用以下内容生成密钥: 和密钥存储: 并尝试连接: }