Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

698
Visualizações
MongoSocketReadException: Alcanzó prematuramente el final de la transmisión (después de un período de inactividad)

Recibo este error en una llamada de find (controlador Java predeterminado) después de un período de inactividad. Intenté agregar un latido manual (escribiendo en una colección limitada), pero no sirvió de nada. Solo tengo el problema mientras estoy conectado a una instancia en redacción (es decir, no en un contexto local).

La versión de MongoDB es 3.2.8, el controlador más reciente (3.3), con Java 8.

Alguna idea ?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Lo encontré en alguna documentación:

Para aplicaciones de ejecución prolongada, a menudo es prudente habilitar "keepAlive" con una cantidad de milisegundos. Sin él, después de un período de tiempo, puede comenzar a ver errores de "conexión cerrada" por lo que parece no tener ningún motivo.

Compruebe si esto ayuda. Cuando se conecta a mongoDB, puede pasarle opciones de socket. Soy del fondo del nodo, usamos las siguientes opciones para mantenerlo vivo.

 server: { socketOptions: { keepAlive: 100, connectTimeoutMS: 30000 } }

¡¡Espero que esto ayude!!

over 4 years ago · Santiago Trujillo Relatório

0

Resuelvo este problema configurando sslEnabled en verdadero, ejemplo de código:

 @Bean public MongoClient mongoClient() { List<ServerAddress> saList = new ArrayList<>(); saList.add(new ServerAddress("cluster0-shard-00-00-75shm.gcp.mongodb.net", 27017)); saList.add(new ServerAddress("cluster0-shard-00-01-75shm.gcp.mongodb.net", 27017)); saList.add(new ServerAddress("cluster0-shard-00-02-75shm.gcp.mongodb.net", 27017)); char[] pwd = "password".toCharArray(); MongoCredential credential = MongoCredential.createCredential("username", "admin", pwd); //set sslEnabled to true here MongoClientOptions options = MongoClientOptions.builder() .readPreference(ReadPreference.primaryPreferred()) .retryWrites(true) .requiredReplicaSetName("Cluster0-shard-0") .maxConnectionIdleTime(6000) .sslEnabled(true) .build(); MongoClient mongoClient = new MongoClient(saList, credential, options); return mongoClient; }

Adición: mi jar de cliente es org.mongodb.mongodb-driver 3.6.4, el servidor es mongodb atlas M0 3.6.6 en GCP

over 4 years ago · Santiago Trujillo Relatório

0

Esto funcionó para mí en spring boot y mongo basado en la nube (instancias agrupadas de Atlas).

Edite application.properties así:

 spring.data.mongodb.uri = mongodb+srv://username:password@solarsystem-1tpu0.mongodb.net/dbname

Para instancias regulares de mongo (no agrupadas) use esto:

 spring.data.mongodb.uri = mongodb://username:password@solarsystem-shard-00-00-1tpu0.mongodb.net:27017,hostname2:27017/dbname?ssl=true
  • Si desea configurar otras opciones de conexión , puede encadenar múltiples parámetros usando '&'; documentación aquí: https://mongodb.github.io/mongo-java-driver/3.4/javadoc/com/mongodb/MongoClientURI.html
  • Si estaba usando otros parámetros spring.data.mongodb , debe eliminarlos todos; de lo contrario, Spring no leerá spring.data.mongodb.uri
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda