【问题标题】:Spring Batch Job + Spring Cloud Data Flow UISpring Batch Job + Spring Cloud 数据流 UI
【发布时间】:2019-10-17 06:38:20
【问题描述】:

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

  1. Spring 云数据流项目可以用 Gradle 搭建吗?我看到所有使用 Maven 构建的示例项目,并且 Spring 官方页面说 Maven 是 Spring Cloud Data Flow 必须的。 Gradle 是我们公司唯一获批的构建项目。
  2. 我们正在寻找 Spring Cloud 数据流中的 Spring 批处理管理 UI 类型的功能或操作。我可以知道如何在 Spring Cloud 数据流中配置作业吗?任何示例项目?
  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;    
     }    
     }

【问题讨论】:

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


    【解决方案1】:

    我将尝试解开问题。

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

    Spring Cloud Data Flow (SCDF) 创建和启动批处理作业所需的只是一个 Spring Boot 应用程序(一个 uber-jar)。无论您是使用 Maven、Gradle 还是通过其他自定义方式构建应用程序都没有关系。 Docker 是另一个流行的选择,也是 Kubernetes 的唯一选择。在 PCF 中,我们建议使用 maven 工件,当然您也可以使用 Gradle 生成它。

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

    我建议您浏览参考指南中的Dashboard 部分。此外,我们在 SCDF 微型站点中有一个端到端任务和Batch Developer Guide。您在 Spring Batch Admin 中所做的任何事情都可以在 SCDF 中完全涵盖,并且还有更多功能位于它之上。请花点时间至少回顾一下所有内容。

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

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

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

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

    【讨论】:

    • 感谢您的回复萨比阿南丹。但我对此还有更多疑问。如果我想将 SCDF 指向我们的应用程序数据库以保留作业执行详细信息,我该怎么做?我想我们需要创建具有 SCDF 依赖项的简单 MS 并指向 SQL 服务器。我对么 ?。如果是的话,这个简单的 MS 可以使用 gradle 构建吗?我在网上看到几个使用 maven build 的例子。
    • 关于这个话题,我尝试下载 sping 云数据流 jar 并在我的本地运行,我能够打开仪表板,配置任务并能够运行它。但它没有显示任何工作细节?如何在我想要开始、停止或重新启动作业的作业部分查看条目?。
    • SCDF 中的任务/批处理应用程序需要用于状态和持久性的 RDBMS。没有它,您将无法运行批处理作业。再次,请看一下参考。指南/微型网站 - 我们努力记录所有内容,以便用户了解。
    • 在 cmets 中很难继续讨论。在这里解开所有细节并不容易。既然您已经是 PCF 客户,或许您可以开一张支持票?一位来自 Pivotal 的平台架构师可以协调会议以更轻松地澄清这一切。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2018-10-24
      • 1970-01-01
      • 2018-05-27
      • 2021-05-12
      • 2017-05-08
      • 2018-03-10
      • 2021-10-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多