首页 > 解决方案 > 带有spring boot的AWS DocumentDB失败错误:com.mongodb.client.internal.MongoClientDelegate没有选择服务器

问题描述

我的应用程序是在 Spring Boot 中编写的,并且可以与自我管理的 MongoDB 服务器一起正常工作。现在我正在尝试将我的同一个 Spring Boot 应用程序与 AWS DocumentDB 连接起来。我启动了一个 documentDB 集群并使用以下配置与 spring-boot 连接。

spring.data.mongodb.uri=mongodb://<user>:<password>@<my-cluster-endpoint>:27017/?replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false
spring.data.mongodb.database=mydb

我已禁用 TLS,它显示TLS Enabled: No在集群详细信息中。我正在将我的 Spring Boot 应用程序部署在一个 EC2 实例中,该实例运行在与 documentdb 相同的 vpc 中,我已经对其进行了交叉检查。运行我的应用程序时出现以下错误。

com.mongodb.client.internal.MongoClientDelegate$1@51a81d99 从集群描述 ClusterDescription{type=REPLICA_SET, connectionMode=MULTIPLE, serverDescriptions=[ServerDescription{address=:27017, type=UNKNOWN, state=CONNECTING, exception={ com.mongodb.MongoSocketReadTimeoutException:接收消息时超时},由{java.net.SocketTimeoutException:读取超时}}]}引起。在超时前等待 30000 毫秒

我没有找到在 spring-boot 中使用 documentdb 的好资源。知道如何找到确切原因吗?

标签: mongodbamazon-web-servicesspring-bootaws-documentdb

解决方案


您可以尝试重新启用 tls,但使用-Djdk.tls.client.protocols=TLSv1.2命令行来降级 tls 版本。

或者尝试升级 Java 版本。


推荐阅读