MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como evitar uma exceção Atingiu prematuramente o fim do fluxo usando o driver Java do mongoDB 3.4+ ou 3.6+? (durante a inserção)

Opção nº 1


O erro foi resolvido pelo formato de conexão (usando os parâmetros maxIdleTimeMS , ssl e authSource ):
MongoClient mongoClient = MongoClients.create("mongodb://user:[email protected]:27017,cluster0-shard-00-01-ox90k.mongodb.net:27017,cluster0-shard-00-02-ox90k.mongodb.net:27017/test?ssl=true&replicaSet=Cluster0-shard-0&authSource=admin&retryWrites=true&maxIdleTimeMS=5000");

Ou você pode configurar as credenciais programaticamente (usando o driver java 3.6+ versões):

admin - é o banco de dados onde os usuários são definidos no Atlas;

user - é o nome de usuário;

mypassword - é a senha;
MongoCredential credential = MongoCredential.createCredential("user", "admin", "mypassword".toCharArray());
        MongoClientSettings settings = MongoClientSettings.builder()
                .credential(credential)
                .retryWrites(true)
                .applyToConnectionPoolSettings(builder ->
                        builder.maxConnectionIdleTime(5000, TimeUnit.MILLISECONDS))
                .applyToSslSettings(builder -> builder.enabled(true))
                .applyToClusterSettings(builder -> {
                    builder.hosts(Arrays.asList(
                            new ServerAddress("cluster0-shard-00-00-ox90k.mongodb.net", 27017),
                            new ServerAddress("cluster0-shard-00-01-ox90k.mongodb.net", 27017),
                            new ServerAddress("cluster0-shard-00-02-ox90k.mongodb.net", 27017)
                    ));
                    builder.requiredReplicaSetName("Cluster0-shard-0");
                })
                .build();

        MongoClient mongoClient = MongoClients.create(settings);

Opção nº 2


Além disso, o erro pode ser resolvido chamando mongodb.MongoClient.connect uma vez, não cada solicitação. Tente reestruturar seu código para chamar connection uma vez em vez de cada vez durante a inserção de um documento específico. Neste caso, você pode evitar quaisquer parâmetros adicionais da opção #1.

Apenas o suficiente:
mongodb+srv://admin:[email protected]/test?retryWrites=true&w=majority

Agradecimentos especiais pela ajuda suporte mongoDB .