Получение com.mongodb.MongoSocketReadException в MongoDB: преждевременно достигнут конец потока - PullRequest
0 голосов
/ 18 апреля 2020

Я использую Mongodb Atlas (кластер) для подключения к моему приложению весенней загрузки. Ранее я мог успешно вставлять и получать данные из кластера, но после нескольких минут бездействия я начал получать

com.mongodb.MongoSocketReadException: Prematurely reached end of stream. Я попытался внести некоторые изменения в URI кластера mongodb, например:

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

Я также проверил настройки SSL в JRE и это хорошо, и я также не видел ни одного журнала ошибок в разделе предупреждений на кластере mongodb. Ниже приведен фрагмент кода, в котором я использовал 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>

1 Ответ

1 голос
/ 18 апреля 2020

Наряду с maxIdleTimeMS попробуйте установить значение keepAlive также вручную.

Также см. Решения в этом связанном вопросе .

...