Optie #1
De fout is opgelost door het formaat van de verbinding (met behulp van de parameters maxIdleTimeMS
, ssl
en 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");
Of u kunt de inloggegevens programmatisch configureren (met behulp van java-stuurprogramma 3.6+
versies):
admin
- is de database waarin de gebruikers zijn gedefinieerd in Atlas;
user
- is de gebruikersnaam;
mypassword
- is het wachtwoord;
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);
Optie #2
Bovendien kan de fout worden opgelost door mongodb.MongoClient.connect
. aan te roepen eenmaal, niet elk verzoek. Probeer uw code om verbinding te maken één keer te herstructureren in plaats van elke keer tijdens het invoegen van een specifiek document. In dit geval kunt u eventuele extra parameters van optie #1 vermijden.
Precies genoeg:
mongodb+srv://admin:[email protected]/test?retryWrites=true&w=majority
Speciale dank voor hulp mongoDB-ondersteuning .