web-dev-qa-db-ja.com

セッションをサポートするMongoDBクラスターを構成するにはどうすればよいですか?

MongoDBの新しいトランザクション機能を探索し、Spring Data MongoDBを使用したいと思います。ただし、「セッションはこのクライアントが接続されているMongoDBクラスターではサポートされていません」という例外メッセージが表示されます。 MongoDB 3.7.9の設定に関するヒントはありがたいです。

スタックトレースは次で始まります:

com.mongodb.MongoClientException:セッションは、このクライアントがcom.mongodb.MongoClient.startSession(MongoClient.Java:555)〜[mongodb-driver-3.8。で接続されているMongoDBクラスターではサポートされていません。 0-beta2.jar:na] at org.springframework.data.mongodb.core.SimpleMongoDbFactory.getSession(SimpleMongoDbFactory.Java:163)〜[spring-data-mongodb-2.1.0.DATAMONGO-1920-SNAPSHOT.jar:2.1 .0.DATAMONGO-1920-SNAPSHOT]

9

公式ドキュメント に記述されているように、Mongoがレプリカセットのトランザクション機能をサポートしていることを、単一のスタンドアロンmongoインスタンスに接続しようとしたときに同じ問題が発生しました。そのため、MongoDB 4.0.0のすべてのインスタンスを含むレプリカセットを作成しようとしましたが、コードを正常に実行できました。したがって、レプリカセット(3つのメンバー)を開始し、コードを実行してみてください。問題は解決されます。

注:テスト用に同じマシンでレプリカセットを構成できます https://docs.mongodb.com/manual/tutorial/deploy-replica-set-for-testing/

9
Piyush Verma

TLS(Spring Data MongoDB内)を無効にしたところ、開発リリース3.7.9のトランザクション機能が正常に動作するようになりました。

0

更新されたAPIを使用していることを確認してください-例:

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

また、mongo.exeが開いていることを確認してください。

0
Guy