【问题标题】:MongoSocketReadException :Prematurely reached end of stream ,while connecting MongoDB Atlas by Spring BootMongoSocketReadException:过早到达流的末尾,同时通过 Spring Boot 连接 MongoDB Atlas
【发布时间】:2021-01-14 21:37:27
【问题描述】:

我正在使用 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 集群的警报部分中也没有看到任何错误日志。下面是我用过MongoTemplate的代码的sn-p。

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>

【问题讨论】:

    标签: java mongodb spring-boot spring-data-mongodb


    【解决方案1】:

    maxIdleTimeMS 一起,尝试手动设置keepAlive 值。

    另外,参考this related question中的解决方案。

    【讨论】:

    • 我也尝试添加这个,但问题仍然存在
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-12
      • 2016-12-29
      • 2018-08-05
      • 1970-01-01
      • 2019-01-15
      • 2020-02-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多