MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

So vermeiden Sie eine Ausnahme. Das Ende des Streams wurde mit dem mongoDB-Java-Treiber 3.4+ oder 3.6+ vorzeitig erreicht? (beim Einsetzen)

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 .