带有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。我正在将EC2实例中的spring boot应用程序部署在与documentdb正在运行相同的vpc中运行的EC2实例中,我对此进行了交叉检查。 运行我的应用程序时,出现以下错误

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

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

解决方法

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

或尝试升级Java版本。