如何在 Spring 数据流服务器中将包含 10 个 Spring 批处理作业的应用程序拆分为 10 个任务?
How to split an application containing 10 Spring batch jobs into 10 tasks in Spring data flow server?
我有一个 spring 引导批处理作业应用程序,它有大约 10 个作业(数量可能会根据需要增加)。我一直在尝试 Spring 具有本地服务器设置的云数据流服务器来启动和监视这些作业。
但我在这里面临的问题是,在 SCDF 中注册应用程序后,我为已注册的应用程序创建任务,并且单个任务本身会从应用程序启动所有 10 个作业。虽然我可以看到在单个任务执行中为每个作业创建了单独的作业 ID,但我想知道是否可以为单个 jar 中可用的每个作业设置单独的任务。如果是这样,我该如何实现?
我需要这个,因为很少有作业执行依赖于作业 运行 之前的执行状态。下面是我的作业 class 配置片段。我的几份工作会 运行 在不同的时间间隔。因此,即使使用 cloud foundry 或 kubernates 来调度作业,我也只能在任务级别进行调度,所有作业都将应用相同的调度间隔。我可能无法为任务中的每个作业应用不同的时间表。我不确定 cloud foundry 和 kubernates 调度部分,但我想这就是它的工作方式。
//Job Config
@Configuration
@EnableBatchProcessing
@EnableTask
public class Job1Loader {
@Bean
public Job loadJob1()
{
return jobBuilderFactory().get("JOb1Loader")
.incrementer(new RunIdIncrementer())
.flow(job01_step01())
.end()
.build();;//return job
}
//Job Config
@Configuration
@EnableBatchProcessing
@EnableTask
public class Job2Loader {
@Bean
public Job loadJob2()
{
return jobBuilderFactory().get("JOb2Loader")
.incrementer(new RunIdIncrementer())
.flow(job02_step01())
.end()
.build();;//return job
}
Same goes for other 8 jobs.
谢谢。
I'm wondering if it's possible to have separate task for each job that's available inside the single jar. If so how can I achieve it?
尽管我不建议将所有作业打包在一个 jar 中,但没有什么能阻止您将这种方法用于 SCDF。您可以为每个作业创建一个任务定义,并为每个任务配置一个 属性 到 运行 一个特定的作业,例如:
--spring.batch.job.names=job1
我有一个 spring 引导批处理作业应用程序,它有大约 10 个作业(数量可能会根据需要增加)。我一直在尝试 Spring 具有本地服务器设置的云数据流服务器来启动和监视这些作业。
但我在这里面临的问题是,在 SCDF 中注册应用程序后,我为已注册的应用程序创建任务,并且单个任务本身会从应用程序启动所有 10 个作业。虽然我可以看到在单个任务执行中为每个作业创建了单独的作业 ID,但我想知道是否可以为单个 jar 中可用的每个作业设置单独的任务。如果是这样,我该如何实现?
我需要这个,因为很少有作业执行依赖于作业 运行 之前的执行状态。下面是我的作业 class 配置片段。我的几份工作会 运行 在不同的时间间隔。因此,即使使用 cloud foundry 或 kubernates 来调度作业,我也只能在任务级别进行调度,所有作业都将应用相同的调度间隔。我可能无法为任务中的每个作业应用不同的时间表。我不确定 cloud foundry 和 kubernates 调度部分,但我想这就是它的工作方式。
//Job Config
@Configuration
@EnableBatchProcessing
@EnableTask
public class Job1Loader {
@Bean
public Job loadJob1()
{
return jobBuilderFactory().get("JOb1Loader")
.incrementer(new RunIdIncrementer())
.flow(job01_step01())
.end()
.build();;//return job
}
//Job Config
@Configuration
@EnableBatchProcessing
@EnableTask
public class Job2Loader {
@Bean
public Job loadJob2()
{
return jobBuilderFactory().get("JOb2Loader")
.incrementer(new RunIdIncrementer())
.flow(job02_step01())
.end()
.build();;//return job
}
Same goes for other 8 jobs.
谢谢。
I'm wondering if it's possible to have separate task for each job that's available inside the single jar. If so how can I achieve it?
尽管我不建议将所有作业打包在一个 jar 中,但没有什么能阻止您将这种方法用于 SCDF。您可以为每个作业创建一个任务定义,并为每个任务配置一个 属性 到 运行 一个特定的作业,例如:
--spring.batch.job.names=job1