MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да избегнем изключение Преждевременно достигнат край на потока с помощта на mongoDB Java драйвер 3.4+ или 3.6+? (по време на поставяне)

Опция №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 .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Битката на базите данни NoSQL - Сравняване на MongoDB и Oracle NoSQL

  2. Има ли все пак да откриете кои ip адреси са свързани към db?

  3. mongo.so:> недефиниран символ:php_json_encode в Unknown на ред 0. След инсталиране mongo драйвер за php

  4. Пролетните данни mongo използват ИЛИ в заявка

  5. Symfony (PHP framework) и MongoDB (или всяка база данни, базирана на json)