当前位置: 首页 > 知识库问答 >
问题:

如何根据文件类型选择要运行的spring批处理作业

王俊哲
2023-03-14
@Configuration
@EnableBatchProcessing
public class FileTypeX1Configuration{
     private FileTypeX1PRocessor fileTypeX1PRocessor ;
     private FileTypeX1Writer fileTypeX1Writer ;

     .
     .
}

.
.
.
@Configuration
@EnableBatchProcessing
public class FileTypeX10Configuration{
     private FileTypeX10PRocessor fileTypeX10PRocessor ;
     private FileTypeX1oWriter fileTypeX10Writer ;

     .
     .
}

共有1个答案

秦宏盛
2023-03-14

首先,只需在一个配置类中添加@enableBatchProcessing。这通常被添加到Spring Boot应用程序的主类中:

@SpringBootApplication
@EnableBatchProcessing
public class SampleApplication {

   public static void main(String[] args) {
      SpringApplication.run(SampleApplication.class, args);
   }

}

现在,关于条件作业启动,有几种方法可以做到这一点(比如使用Spring概要文件,使用基于@condition的自定义条件来定义作业bean,等等)。但最直接的方法是在其中做主要的方法:

@SpringBootApplication
@EnableBatchProcessing
public class SampleApplication {

   public static void main(String[] args) {
      ConfigurableApplicationContext context = SpringApplication.run(SampleApplication.class, args);
      JobLauncher jobLauncher = context.getBean(JobLauncher.class);
      
      File file = .. // get file
      // based on file type, run the required job:
      Job job = context.getBean("jobX", Job.class);
      jobLauncher.run(job, new JobParameters());
   }

}

您需要设置Spring.batch.job.enabled=false,以防止Spring Boot在应用程序启动时运行所有作业。

 类似资料:
  • 我有一个作业流,我希望以以下方式运行它: 作业流将从Job1开始。在Job1成功完成后,Job1将同时启动Job2和Job4。 Job2和Job4将并行运行。 在Job2成功完成后,Job2将启动Job3。 在Job4成功完成后,Job4将启动Job5。 下面是job1.xml和job1的作业启动器类的代码片段: job1.xml uijobLauncher.java “job2,Job3”对和“

  • 问题内容: 运行main方法时,将执行作业。这样我无法弄清楚如何控制作业的执行。例如,您如何安排作业,访问作业执行或设置作业参数的方式。 我试图注册自己的JobLauncher 但是当我尝试在主要方法中使用它时: 当加载上下文时,该作业再次执行,而当我尝试手动运行它时,我得到了。有没有办法防止自动作业执行? 问题答案: 通过设置可以防止作业执行 在application.properties中。或

  • 我按照这个示例使用Boot进行Spring批处理。 运行main方法时,作业将执行。这样我就不知道如何控制作业的执行了。例如如何排定作业、访问作业执行或设置作业参数。 我尝试注册自己的JobLauncher 但当我尝试在主法中使用时: 当加载上下文时,再次执行作业,并且尝试手动运行作业时得到。有没有办法防止自动执行作业?

  • 我在BatchScheduler中有多个计划作业,它在特定时间运行。简单的内置JobLauncher,这是同步的。在自然界中最初使用。现在,我想并行运行这些作业,这样没有作业可以等待其他作业完成。 我在不同的作业上尝试过@Async注释,但都不起作用。 然后,我尝试设置joblauncher.settaskexecutor(新的SimpleAsyncTaskExecutor())。但这并不奏效。

  • 当共享文件夹中的文件可用时,我希望立即运行Spring批处理作业。我已经制作了一个观察器服务来检查目录中的新条目,但是我如何触发我的批处理作业呢? 我做了以下更改- 现在,如果我尝试运行代码,我会得到下面的响应- 10.506秒内启动应用程序(JVM运行为11.676)2018-07-23 16:55:53.646信息18200---[Thread-2]S.C.A.AnnotationConfig

  • Spring批处理作业与flatfileitemreader(从csv读取)、processor(更新adwords api提要详细信息,对于csv文件中的每个记录(大约有40条记录),这一步大约需要40秒)和正在更新DB中记录的定制writer一起使用。 web.xml