Option 1
L'erreur a été résolue par le format de connexion (en utilisant les paramètres maxIdleTimeMS
, ssl
et 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 vous pouvez configurer les informations d'identification par programme (à l'aide du pilote Java 3.6+
versions):
admin
- est la base de données où les utilisateurs sont définis dans Atlas ;
user
- est le nom d'utilisateur ;
mypassword
- est le mot de passe ;
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);
Option 2
De plus, l'erreur peut être résolue en appelant mongodb.MongoClient.connect
une fois, pas à chaque demande. Essayez de restructurer votre code pour appeler la connexion une fois au lieu de chaque fois lors de l'insertion d'un document spécifique. Dans ce cas, vous pouvez éviter tout paramètre supplémentaire de l'option 1.
Juste assez :
mongodb+srv://admin:[email protected]/test?retryWrites=true&w=majority
Un merci spécial pour l'aide prise en charge de mongoDB .