Möglichkeit Nr. 1
Der Fehler wurde durch das Verbindungsformat behoben (unter Verwendung der Parameter maxIdleTimeMS
, ssl
und 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");
Oder Sie können die Anmeldeinformationen programmgesteuert konfigurieren (unter Verwendung des Java-Treibers 3.6+
Versionen):
admin
- ist die Datenbank, in der die Benutzer in Atlas definiert sind;
user
- ist der Benutzername;
mypassword
- ist das Passwort;
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 Nr. 2
Außerdem kann der Fehler durch den Aufruf von mongodb.MongoClient.connect
behoben werden einmal, nicht jede Anfrage. Versuchen Sie, Ihren Code so umzustrukturieren, dass die Verbindung nur einmal statt jedes Mal beim Einfügen eines bestimmten Dokuments aufgerufen wird. In diesem Fall können Sie zusätzliche Parameter aus Option #1 vermeiden.
Gerade genug:
mongodb+srv://admin:[email protected]/test?retryWrites=true&w=majority
Besonderer Dank für Hilfe MongoDB-Unterstützung .