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:example@sqldat.com: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:example@sqldat.com/test?retryWrites=true&w=majority
Un merci spécial pour l'aide prise en charge de mongoDB .