web-dev-qa-db-fra.com

Comment configurer un cluster MongoDB qui prend en charge les sessions?

Je souhaite explorer la nouvelle fonctionnalité de transaction de MongoDB et utiliser Spring Data MongoDB. Cependant, j'obtiens le message d'exception " Les sessions ne sont pas prises en charge par le cluster MongoDB auquel ce client est connecté ". Tout indice concernant la configuration de MongoDB 3.7.9 est apprécié.

Le stacktrace commence par:

com.mongodb.MongoClientException: Les sessions ne sont pas prises en charge par le cluster MongoDB auquel ce client est connecté à com.mongodb.MongoClient.startSession (MongoClient.Java:555) ~ [mongodb-driver-3.8. 0-beta2.jar: na] sur org.springframework.data.mongodb.core.SimpleMongoDbFactory.getSession (SimpleMongoDbFactory.Java:163) ~ [spring-data-mongodb-2.1.0.DATAMONGO-1920-SNAPSHOT.jar: 2.1: 2.1 .0.DATAMONGO-1920-INSTANTANÉ]

9

J'avais le même problème lorsque j'essayais de le connecter à une seule instance de mongo autonome, mais comme indiqué dans le documentation officielle , Mongo prend en charge la fonctionnalité de transaction pour un jeu de réplicas. J'ai donc essayé de créer un jeu de réplicas avec toutes les instances sur MongoDB 4.0.0, j'ai réussi à exécuter le code. Alors, démarrez un jeu de réplicas (3 membres), puis essayez d'exécuter le code, le problème sera résolu.

NB: vous pouvez configurer un jeu de répliques sur la même machine pour les tests https://docs.mongodb.com/manual/tutorial/deploy-replica-set-for-testing/

9
Piyush Verma

J'ai désactivé TLS (dans Spring Data MongoDB), et maintenant la fonctionnalité de transaction avec la version de développement 3.7.9 fonctionne bien.

0

Assurez-vous que vous utilisez l'API mise à jour - par exemple:

MongoClient mongoClient = MongoClients.create();
MongoDatabase dataBase = mongoClient.getDatabase("mainDatabase");
MongoCollection<Document> collection = dataBase.getCollection("entities");

Assurez-vous également que mongo.exe est ouvert.

0
Guy