Java GAE无法查找mongodb atlas实例的SRV记录

Java GAE无法查找mongodb atlas实例的SRV记录,java,mongodb,spring-boot,google-app-engine,google-cloud-platform,Java,Mongodb,Spring Boot,Google App Engine,Google Cloud Platform,我有一个运行在Atlas上的mongodb实例,还有一个运行在GAE上的Spring Boot应用程序试图访问这个数据库。我在本地运行它没有问题,但是在GAE上运行时,我在日志中看到了这个错误 com.mongodb.MongoConfigurationException: Unable to look up SRV record for host xyz-abc-delta-james.gcp.mongodb.net 这是我对mongodb的spring引导配置 spring.data.mo

我有一个运行在Atlas上的mongodb实例,还有一个运行在GAE上的Spring Boot应用程序试图访问这个数据库。我在本地运行它没有问题,但是在GAE上运行时,我在日志中看到了这个错误

com.mongodb.MongoConfigurationException: Unable to look up SRV record for host xyz-abc-delta-james.gcp.mongodb.net
这是我对mongodb的spring引导配置

spring.data.mongodb.authentication-database=admin
spring.data.mongodb.field-naming-strategy=org.springframework.data.mapping.model.CamelCaseAbbreviatingFieldNamingStrategy
spring.data.mongodb.uri=mongodb+srv://<user>:<password>@xyz-abc-delta-james.gcp.mongodb.net/test?retryWrites=true
有人遇到过这样的事情吗?这可能是GAE的网络限制吗

谢谢


NB:我已经发布了这篇文章,但没有得到任何回应。

显然,GAE不支持最新(3.6x及以上版本)的mogodb uri格式,在我切换到相当长的uri表示的传统(3.4x及以上版本)后,一切都顺利进行

spring.data.mongodb.uri=mongodb://<user>:<password>@xyz-abc-delta-james.gcp.mongodb.net:27017,foo-bar-shard-00-01-tlxzf.gcp.mongodb.net:27017,foo-bar-shard-00-02-tlxzf.gcp.mongodb.net:27017/test?ssl=true&replicaSet=foo-bar-shard-0&authSource=admin&retryWrites=true
spring.data.mongodb.uri=mongodb://:@xyz abc delta james.gcp.mongodb.net:27017,foo-bar-shard-00-01-tlxzf.gcp.mongodb.net:27017,foo-bar-shard-00-02-tlxzf.gcp.mongodb.net:27017/test?ssl=true&replicset=foo-bar-shard-0&authSource=admin&retryWrites=true
由于SpringBoot在3.6x版本上有一个内部依赖项,因此我不得不为3.4版本手动添加mongodb依赖项

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-mongodb</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.mongodb</groupId>
                <artifactId>mongo-java-driver</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongo-java-driver</artifactId>
        <version>3.4.3</version>
    </dependency>

org.springframework.boot
spring启动程序数据mongodb
org.mongodb
mongo java驱动程序
org.mongodb
mongo java驱动程序
3.4.3
我找到了一个解决方案:

您必须在Google Cloud控制台中解锁默认的传出TCP端口(MongoDB Atlas的默认端口为
27017


更准确地说:在“网络>>专有网络>>防火墙”一节中,只需添加一个。

您使用的是哪个
mongo java驱动程序
版本?感谢这解决了连接mongo的问题,但没有解决SRV的问题。
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-mongodb</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.mongodb</groupId>
                <artifactId>mongo-java-driver</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongo-java-driver</artifactId>
        <version>3.4.3</version>
    </dependency>