在同一JVM中同时运行2个SpringApplication?

时间:2018-12-06 06:47:29

标签: multithreading spring-boot

我将一些代码作为2个单独的配置运行,如下所示:

        SpringApplication north = new SpringApplication(MyApp.class);
        north.setAdditionalProfiles("north");
        north.run();

        SpringApplication south = new SpringApplication(MyApp.class);
        south.setAdditionalProfiles("south");
        south.run()

这很好。但是,当我尝试同时在ForkJoinPool上运行它们时,作为两个单独的任务,日志记录变得一团糟(对于每个线程,相同的日志消息出现2-3次或更多)。

我尝试设置org.springframework.boot.logging.LoggingSystem=none,但没有效果。

有没有记载的方法可以在同一个JVM中同时运行两个SpringBoot配置?

1 个答案:

答案 0 :(得分:0)

通过将应用程序的多线程部分从CommandLineRunner::run / SpringApplication::run移到Bean来解决问题。委托SpringApplication::run来执行初始化,使用返回的ConfigurableApplicationContext来解析和调用基于Bean的进程。