Opzione n. 1
L'errore è stato risolto dal formato della connessione (usando i parametri 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");
Oppure puoi configurare le credenziali a livello di codice (usando il driver java 3.6+
versioni):
admin
- è il database in cui gli utenti sono definiti in Atlas;
user
- è il nome utente;
mypassword
- è la password;
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);
Opzione n. 2
Inoltre, l'errore può essere risolto chiamando mongodb.MongoClient.connect
una volta, non ogni richiesta. Prova a ristrutturare il tuo codice per chiamare la connessione una volta invece di ogni volta durante l'inserimento di un documento specifico. In questo caso, puoi evitare qualsiasi parametro aggiuntivo dall'opzione #1.
Quanto basta:
mongodb+srv://admin:[email protected]/test?retryWrites=true&w=majority
Un ringraziamento speciale per l'aiuto supporto mongoDB .