MongoSocketReadException:通过Sping Boot 连接MongoDB Atlas时,过早到达流的末尾

mspsb9vt  于 2023-08-04  发布在  Go
关注(0)|答案(3)|浏览(106)

我正在使用MongoDB atlas(集群)连接到我的spring Boot 应用程序。我早些时候能够成功地插入和从集群中获取数据,但在几分钟的不活动后,我开始获取,
com.mongodb.MongoSocketReadException: Prematurely reached the end of stream。我尝试在mongodb集群URI中进行一些更改,例如:
spring.data.mongodb.uri=mongodb+srv://emuser:empassword@emp-mate-bzmeh.gcp.mongodb.net/emp-mate-db?retryWrites=true&retryReads=true&w=majority也试过
spring.data.mongodb.uri=mongodb+srv://emuser:empassword@emp-mate-bzmeh.gcp.mongodb.net/emp-mate-db?ssl=true&retryWrites=true&retryReads=true&w=majority&maxIdleTimeMS=80
我还检查了JRE中的SSL设置,它很好&我在MongoDB集群的Alert部分也没有看到任何错误日志。下面是我使用MongoTemplate的代码片段。

import java.util.List;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;
import com.mongodb.client.result.UpdateResult;
import employeemate.repository.UsersRepository;
import employeemate.resources.Users;

    @Service
    public class UserService {
        @Autowired
        MongoTemplate mongoTemplate;
        @Autowired
        UsersRepository usersRepository;

        public void addSampleData() {
             System.out.println("Adding sample data");
             usersRepository.save(new Users("1","Ashu","test@gmail.com", 24, "Male", "1111111111", "Delhi"));
             usersRepository.save(new Users("2","Adam Clark", "adam@gmail.com",24,"Male", "2222222222", "Shelton CT"));

             }
        }

字符串
POM.xml

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

tp5buhyn

tp5buhyn1#

一种可能性是,在MongoDB Atlas中,您(明智地)限制了对特定IP地址的访问,并且您正在连接的机器的IP地址已经更改,因为它是动态设置的。如果是这种情况,您可能需要在每次更改时将您的IP地址添加到MongoDB Atlas帐户,或者使用静态IP地址设置自己。

suzh9iv8

suzh9iv82#

沿着maxIdleTimeMS,还可以尝试手动设置keepAlive值。
此外,请参阅this related question中的解决方案。

qnakjoqk

qnakjoqk3#

当我试图从springboot应用程序连接到atlas集群上的mongodb时,我遇到了这个错误。将allow access from anywhere (0.0.0.0/0)添加到网络权限列表解决了我的问题。

相关问题