Конфигурирование встроенного монета flapdoodle с Mongodb версии 4 и реплики
В настоящее время я работаю над приложением весенней загрузки 2.0.3.RELEASE. Я хочу настроить Flapdoodle MongoDb с MongoDb версии 4.0, а также настроить отдельный экземпляр mongo и создать для него реплики.
До сих пор я не выяснил процесс создания кластера и реплик с использованием flapdoodle.
я использую
MongodConfigBuilder().version(Version.Main.DEVELOPMENT)
.replication(new Storage(null, null, 0))
.build();
Я прочитал много вопросов здесь, связанных с этой конфигурацией, но ни один из них не связан с моей проблемой. Например, как настроить два экземпляра mongodb, используя данные весенней загрузки и пружины
Конфигурация flapdoodle имеет реализацию для этого, но я не уверен, как получить к ней доступ.
Есть ли способ настроить его в моем тестовом классе до запуска приложения. Спасибо
0 ответов
Мне пришлось запустить Embedded 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
}
}
Если вы хотите запустить приложение, то включение набора реплик может быть выполнено в реализации ApplicationListener.