sql >> Databáze >  >> NoSQL >> MongoDB

Jak se vyhnout výjimce Předčasně dosaženo konce streamu pomocí ovladače mongoDB Java 3.4+ nebo 3.6+? (při vkládání)

Možnost č. 1

Chyba byla vyřešena formátem připojení (pomocí parametrů maxIdleTimeMS , ssl a 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");

Nebo můžete přihlašovací údaje nakonfigurovat programově (pomocí ovladače java 3.6+ verze):

admin - je databáze, kde jsou uživatelé definováni v Atlasu;

user - je uživatelské jméno;

mypassword - je heslo;

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);

Možnost č. 2

Chybu lze navíc vyřešit voláním mongodb.MongoClient.connect jednou, ne každou žádost. Zkuste restrukturalizovat svůj kód tak, aby volal připojení jednou místo pokaždé během vkládání konkrétního dokumentu. V tomto případě se můžete vyhnout jakýmkoli dalším parametrům z možnosti #1.

Tak akorát:

mongodb+srv://admin:[email protected]/test?retryWrites=true&w=majority

Zvláštní poděkování za pomoc podpora mongoDB .



  1. Jak mohu odstranit toto upozornění na ukončení podpory v MongoDB a proč se to děje?

  2. počkat, až se začnou spouštět další nasazení, než bude možné vytvořit další?

  3. Upserting v Mongo DB a problém s Id

  4. Aktualizace MongoDB:Vygenerujte nové pole na základě existujícího pole nebo aktualizujte na místě