Опция №1
Грешката беше разрешена от формата на връзката (с помощта на параметрите maxIdleTimeMS
, ssl
и 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");
Или можете да конфигурирате идентификационните данни програмно (като използвате Java драйвер 3.6+
версии):
admin
- е базата данни, където потребителите са дефинирани в Atlas;
user
- е потребителското име;
mypassword
- е паролата;
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);
Опция №2
Освен това грешката може да бъде разрешена чрез извикване на mongodb.MongoClient.connect
веднъж, а не всяка заявка. Опитайте се да преструктурирате кода си, за да извиквате връзка веднъж вместо всеки път по време на вмъкване на конкретен документ. В този случай можете да избегнете всякакви допълнителни параметри от опция #1.
Достатъчно:
mongodb+srv://admin:[email protected]/test?retryWrites=true&w=majority
Специални благодарности за помощта поддръжка на mongoDB .