【问题标题】:AWS DocumentDB with spring boot fails Error : No server chosen by com.mongodb.client.internal.MongoClientDelegate带有spring boot的AWS DocumentDB失败错误:com.mongodb.client.internal.MongoClientDelegate没有选择服务器
【发布时间】:2021-01-30 00:55:36
【问题描述】:

我的应用程序是在 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,异常={com.mongodb.MongoSocketReadTimeoutException:接收消息超时},由{java.net.SocketTimeoutException:读取超时}}]}引起。在超时前等待 30000 毫秒

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

【问题讨论】:

  • 这似乎不是 spring-boot 本身的问题。您是否使用正确的安全组设置? DocumentDB 确实需要在 DB 端口上启用入站连接。请参阅“为集群的安全组启用入站连接”。在docs.aws.amazon.com/documentdb/latest/developerguide/…。排除这种情况的一种方法是运行“telnet 27017”之类的命令,看看是否连接成功。
  • 是的,我使用了正确的安全组,并且能够从同一个 EC2 实例连接到 mongo shell。
  • 你找到解决这个问题的方法了吗?可以在这里分享?

标签: mongodb amazon-web-services spring-boot aws-documentdb


【解决方案1】:

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

或者尝试升级 Java 版本。

【讨论】:

  • 我使用 jdk 14 还是同样的问题
猜你喜欢
  • 2021-07-29
  • 2017-03-04
  • 1970-01-01
  • 1970-01-01
  • 2016-02-09
  • 2021-08-18
  • 2020-04-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多