Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Mongodb版本4和副本配置Flappodle embedded mongo_Java_Spring_Spring Boot_Embedded Database_Spring Mongodb - Fatal编程技术网

Java 使用Mongodb版本4和副本配置Flappodle embedded mongo

Java 使用Mongodb版本4和副本配置Flappodle embedded mongo,java,spring,spring-boot,embedded-database,spring-mongodb,Java,Spring,Spring Boot,Embedded Database,Spring Mongodb,我目前正在开发spring boot应用程序2.0.3.0版本。我想用MongoDb 4.0版配置Flappodle MongoDb,还想设置一个mongo实例并为其创建副本 到目前为止,我还没有弄清楚使用flapdoodle创建集群和副本的过程 我正在使用 MongodConfigBuilder().version(Version.Main.DEVELOPMENT) .replication(new Storage(null, null, 0))

我目前正在开发spring boot应用程序2.0.3.0版本。我想用MongoDb 4.0版配置Flappodle MongoDb,还想设置一个mongo实例并为其创建副本

到目前为止,我还没有弄清楚使用flapdoodle创建集群和副本的过程

我正在使用

         MongodConfigBuilder().version(Version.Main.DEVELOPMENT)
        .replication(new Storage(null, null, 0))
        .build();
我在这里阅读了许多与此配置相关的问题,但没有一个与我的问题相关。如

活板门配置对此有一个实现,但我不知道如何访问它

在应用程序启动之前,有没有办法在我的测试类中配置它。
谢谢

我不得不在web集成测试中使用replicaset启动嵌入式mongo,代码如下

@Configuration
public class MongoConfig {

    public static int mongodPort;
    public static String defaultHost = "localhost";
    static {
        try {
            mongodPort = Network.getFreeServerPort();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Bean
    public IMongodConfig prepareMongodConfig() throws IOException {
        IMongoCmdOptions cmdOptions = new MongoCmdOptionsBuilder()
                .useNoPrealloc(false)
                .useSmallFiles(false)
                .master(false)
                .verbose(false)
                .useNoJournal(false)
                .syncDelay(0)
                .build();

        IMongodConfig mongoConfigConfig = new MongodConfigBuilder()
                .version(Version.Main.PRODUCTION)
                .net(new Net(mongodPort, Network.localhostIsIPv6()))
                .replication(new Storage(null, "testRepSet", 5000))
                .configServer(false)
                .cmdOptions(cmdOptions)
                .build();
        return mongoConfigConfig;
    }

}
 Public class ITtest {
    public  void  setSystemProperty() {
            System.setProperty("spring.data.mongodb.port", String.valueOf(MongoConfig.mongodPort));
            System.setProperty("spring.data.mongodb.host", MongoConfig.defaultHost);
        }

        public static boolean isReplicaSetRun = false;

        public static void setupMongoReplica() {
            if (! isReplicaSetRun) {
                System.out.println("Starting db on port: " +MongoConfig.mongodPort);
                MongoClient client = new MongoClient(MongoConfig.defaultHost, MongoConfig.mongodPort);
                client.getDatabase("admin").runCommand(new Document("replSetInitiate", new Document()));
                client.close();
                isReplicaSetRun = true;
            }
        }

        @Test
        @Order(1)
        public void testParallel() {
            setSystemProperty();
            setupMongoReplica();
            // call web controller
      }
   }
在调用我的控制器之前,我使用下面的代码启用了具有副本集的DB

@Configuration
public class MongoConfig {

    public static int mongodPort;
    public static String defaultHost = "localhost";
    static {
        try {
            mongodPort = Network.getFreeServerPort();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Bean
    public IMongodConfig prepareMongodConfig() throws IOException {
        IMongoCmdOptions cmdOptions = new MongoCmdOptionsBuilder()
                .useNoPrealloc(false)
                .useSmallFiles(false)
                .master(false)
                .verbose(false)
                .useNoJournal(false)
                .syncDelay(0)
                .build();

        IMongodConfig mongoConfigConfig = new MongodConfigBuilder()
                .version(Version.Main.PRODUCTION)
                .net(new Net(mongodPort, Network.localhostIsIPv6()))
                .replication(new Storage(null, "testRepSet", 5000))
                .configServer(false)
                .cmdOptions(cmdOptions)
                .build();
        return mongoConfigConfig;
    }

}
 Public class ITtest {
    public  void  setSystemProperty() {
            System.setProperty("spring.data.mongodb.port", String.valueOf(MongoConfig.mongodPort));
            System.setProperty("spring.data.mongodb.host", MongoConfig.defaultHost);
        }

        public static boolean isReplicaSetRun = false;

        public static void setupMongoReplica() {
            if (! isReplicaSetRun) {
                System.out.println("Starting db on port: " +MongoConfig.mongodPort);
                MongoClient client = new MongoClient(MongoConfig.defaultHost, MongoConfig.mongodPort);
                client.getDatabase("admin").runCommand(new Document("replSetInitiate", new Document()));
                client.close();
                isReplicaSetRun = true;
            }
        }

        @Test
        @Order(1)
        public void testParallel() {
            setSystemProperty();
            setupMongoReplica();
            // call web controller
      }
   }
若要运行应用程序,则可以在ApplicationListener的实现中启用replicaset