Spring Batch Job + Spring Cloud Data Flow用户界面

时间:2019-05-31 15:37:44

标签: spring-cloud-dataflow spring-batch-admin

我们的应用程序是使用Spring Boot + Gradle构建的。我们对实现春季批处理作业有一个新的要求,它将使用autosys(作业计划工具)来触发,它有3个步骤执行3种不同的操作(文件准备,ftp和审核操作)。我已附上@EnableBatchProcessing配置文件供您参考。这是我与Spring Cloud Data Flow有关的问题。

  1. 可以使用Gradle构建Spring云数据流项目吗?我看到所有使用Maven构建的示例项目,并且Spring官方页面上说Maven对于Spring Cloud Data Flow是必须的。 Gradle是我们公司中唯一获批的建造项目。
  2. 我们正在寻找Spring Cloud数据流中的Spring批管理界面类型的功能或操作。我可以知道如何在Spring Cloud数据流中配置Jobs吗?任何样本项目?
  3. 我们的应用程序已部署到PCF(Pivotal Cloud Foundry)容器中。所以问题是,我们是否需要在PCF基础架构中添加必须分配的任何服务/插件/空间以支持Spring Cloud数据流?...
  4. Spring Cloud数据流项目生产准备就绪了吗?可以在生产中使用吗?

     @Configuration   
     @EnableBatchProcessing     
     public class TaskletsConfig {

     @Autowired   
     private JobBuilderFactory jobs;

     @Autowired   
     private StepBuilderFactory steps;

     @Bean   
     protected Step flatFilePreparation() {    
         return steps
                 .get("flatFilePreparation")
                 .tasklet(new FlatFilePreparation())
                 .build();
     }

     @Bean
     protected Step ftpFile() {
         return steps
                 .get("ftpFile")
                 .tasklet(new FtpFile())
                 .build();
     }

     @Bean
     protected Step auditFilePreparation() {
         return steps
                 .get("auditFilePreparation")
                 .tasklet(new AuditFilePreparation())
                 .build();
     }

     @Bean
     protected Step errorStep() {
         return steps
                 .get("errorStep")
                 .tasklet(new ErrorStep())
                 .build();
     }

     @Bean
     public Job job() {
        return jobs.get("psbijob").start(flatFilePreparation()).on(ExitStatus.FAILED.getExitCode()).to(errorStep())
             .from(flatFilePreparation()).on("*").to(ftpFile()).on(ExitStatus.FAILED.getExitCode()).to(errorStep())    
             .from(ftpFile()).on("*").to(auditFilePreparation()).end().build();      
     }

     @Bean    
     public JobRepository jobRepository() throws Exception {    
         MapJobRepositoryFactoryBean factory
                 = new MapJobRepositoryFactoryBean();    
         factory.setTransactionManager(transactionManager());    
         return (JobRepository) factory.getObject();    
     }    

     @Bean    
     public PlatformTransactionManager transactionManager() {    
         return new ResourcelessTransactionManager();    
     }    

     @Bean    
     public JobLauncher jobLauncher() throws Exception {    
         SimpleJobLauncher jobLauncher = new SimpleJobLauncher();    
         jobLauncher.setJobRepository(jobRepository());    
         return jobLauncher;    
     }    
     }

2 个答案:

答案 0 :(得分:0)

我将尝试解开问题。

  

可以使用Gradle构建Spring云数据流项目吗?

创建和启动批处理作业所需的所有Spring Cloud Data Flow(SCDF)都是Spring Boot应用程序(一个uber-jar)。是否使用Maven,Gradle或其他自定义方式构建应用程序都无关紧要。 Docker是另一个受欢迎的选择,这是Kubernetes的唯一选择。在PCF中,我们建议使用Maven工件,您当然也可以使用Gradle来生产它。

  

我们正在寻找Spring Cloud数据流中的Spring批管理界面类型的功能或操作。我可以知道如何在Spring Cloud数据流中配置Jobs吗?任何示例项目?

我建议您浏览参考指南中的Dashboard部分。另外,我们在SCDF Microsite中有一个端到端任务和Batch Developer Guide。您在Spring Batch Admin中所做的任何事情和所有事情都可以在SCDF中完全涵盖,并且它上面还包含许多其他功能。请花点时间至少检查一下所有内容。

  

我们是否需要添加任何必须在PCF基础架构中分配的服务/插件/空间以支持Spring Cloud数据流?

没有特殊要求。 SCDF也仅仅是一个Boot应用程序。您可以将其手动推送到组织/空间,也可以使用SCDF Tile for PCF(一种完全托管的市场服务)来自动配置SCDF和相关组件(安全性/升级/数据库/代理)。

  

Spring Cloud数据流项目生产准备就绪了吗?可以在生产中使用吗?

SCDF的1.0 GA版本于2016年7月发布。我们目前的版本为2.1 GA。自从第一个GA里程碑以来,已经发布了50多个产品。 PCF的SCDF瓷砖现在也已经生产超过1年。而且,特别是在PCF中,我们有多个客户在生产中使用SCDF。

答案 1 :(得分:0)

是否可以在不使用Spring Cloud DataFlow的情况下触发Spring Cloud任务?我能够在Spring Cloud数据流UI中注册我们的应用程序,但是批处理作业是由Autosys工具触发的(不是手动启动)。因此,我们要确保SCDF能够跟踪在SCDF空间外部触发的所有作业。我们的工作是每周工作。