【问题标题】:How to pick a spring batch job to run based on file type如何根据文件类型选择要运行的春季批处理作业
【发布时间】:2020-12-28 08:25:48
【问题描述】:

我正在使用 Spring Boot + Spring Batch(annotation),该应用程序为 10 种不同类型的文件配置了 10 个批处理作业。该文件本身是从 AmazonS3 中提取的。谁能指导我如何根据从 S3 提取的文件类型以编程方式运行批处理作业。当文件放在类路径中时,10 个批处理作业中的每一个都运行良好,不确定如何根据文件类型选择要运行的作业。对 Spring Boot 和 Spring Batch 来说是全新的,任何指导将不胜感激。

@Configuration
@EnableBatchProcessing
public class FileTypeX1Configuration{
     private FileTypeX1PRocessor fileTypeX1PRocessor ;
     private FileTypeX1Writer fileTypeX1Writer ;

     .
     .
}

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

     .
     .
}

【问题讨论】:

  • 每个作业都添加一个spring批处理cron,因此它将根据资源类型自动执行和读取

标签: spring-boot annotations spring-batch


【解决方案1】:

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

@SpringBootApplication
@EnableBatchProcessing
public class SampleApplication {

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

}

现在关于您的有条件的作业启动,有几种方法可以做到这一点(例如使用 Spring 配置文件、使用基于 @Conditional 的自定义条件来定义您的作业 bean 等)。但最直接的方法是在其中执行 main 方法:

@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 在您的应用程序启动时运行所有作业。

如果您可以在应用程序之外检测到文件类型(例如在 shell 脚本中),您可以使用属性 spring.batch.job.names=jobX 告诉 Spring Boot 应该从您的脚本运行哪个作业。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-04
    • 2012-10-19
    • 1970-01-01
    • 2021-03-24
    • 2016-03-03
    相关资源
    最近更新 更多