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

如何基于特定批处理作业定义spring批处理云任务

韦知
2023-03-14

我们目前正在将一个复杂的spring boot batch+admin UI系统迁移到一个spring-cloud-task基础设施中,该基础设施将被管理云数据流。

作为POC的第一阶段,我们必须能够将所有Spring批处理作业打包在同一个部署JAR下,并且能够使用自定义作业参数一个接一个地运行它们,并且支持某种REST API远程执行作业/任务。

我们删除了所有spring-batch管理依赖项,并添加了spring-cloud-starter-task

10x

共有1个答案

万俟超
2023-03-14

为了完成您想要做的事情,有两个步骤:

  1. 将批处理作业重新打包到Spring Bootüber jar中。这应该很直截了当。
  2. 为要运行的每个作业创建任务定义。一旦在Spring Cloud Data Flow中创建并注册了您的über jar,您将需要创建作业定义。每个定义如下所示,其中über jar包含一个名为foojob的批处理作业和一个名为barjob:

dataflow:>app register--name batchJobs--type task--uri dataflow:>task create--name fooBatchJob--definition“batchJobs--spring.batch.job.names=foojob”dataflow:>task create--name barBatchJob--definition“batchJobs--spring.batch.job.names=barjob”

 类似资料:
  • 我有以下工作要处理在一定的时间间隔或特别的基础上。 作业中的步骤如下: 我也想要用户界面,在那里我可以触发一个特别的基础上的工作,而且我应该能够提供参数从用户界面。 我想用Spring batch来完成这个任务,但它更多的是用于读->处理->写之类的工作。这里,在第一步中,我正在生成由第二步读取的数据。我不确定我是否还可以使用Spring batch来实现这个,或者有更好的方法来实现这个。

  • 我正在使用sping-xd通过批处理作业进行数据摄取。大量作业在4个容器中并行运行。任何地方都在10到40个作业之间。其中大多数在不到一分钟的时间内完成。我使用redis(而不是Rabbitmq)和mysql进行数据存储。Spring-xd-批处理使用不同的mysql-db进行作业/步骤统计,我的应用程序使用不同的mysql-db用于自己的目的。两个mysql-db都在同一台服务器上。所有4个容器

  • 我希望能够用REST控制器开始我的作业,然后当作业开始时,它应该在计划的基础上运行,直到我用REST再次停止它。

  • 我在XML中定义了注入的流,如下所示: 因此,正如您所看到的,我实际上是从的方法启动方法(用于动态创建这些作业定义)。我不确定这是对的。它正在运行,但我不确定是否有一个不同的入口点更适合于这个目的。老实说,我也不知道注释的意义是什么。 当前遇到的问题是,当我从调用时,它会引发以下: 若要使用默认的BatchConfigurer,上下文必须包含一个以上的数据源(found 2)。 注意:我的项目实际

  • 我想分散加工大批量。这个想法是使用Spring Batch在云中激发一堆AMQP消费者,然后加载廉价的任务(如项目ID)并将它们提交给AMQP交换。结果的书写将由消费者自己完成。 null