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

当使用spring batch和spring Boot时,如何总是为每次运行启动一个新的作业实例?

闻人宏盛
2023-03-14
@SpringBootApplication
@EnableBatchProcessing
public class Application {
  public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
  }
}

使用此配置,我可以从命令行运行作业:

java -jar batch.jar --spring.batch.job.names=job1ToRun

如何使用类似的机制为每次运行启动一个新实例?我需要从命令行指定作业名称来选择要运行的作业。

共有1个答案

邹嘉石
2023-03-14

来自spring-batch文档

CommandLineJobRunner

因为启动作业的脚本必须启动Java虚拟机,所以需要有一个具有main方法的类来充当主要入口点。Spring Batch提供了一个实现,该实现正好用于此目的:CommandLineJobrunner。需要注意的是,这只是引导应用程序的一种方法,但是启动Java进程的方法有很多种,这个类绝不应该被视为权威的。CommandLineJobRunner执行四个任务:

    null
 public static void main(String[] args) throws Exception {
    ConfigurableApplicationContext ctx = SpringApplication.run(Application.class, args);
    JobLauncher jobLauncher = ctx.getBean(JobLauncher.class);
    String jobName = args[0] // assuming args[0] is the jobName
    JobParameters jobParameters = createJobParameters(args)
    Job jobInstance = ctx.getBean(jobName, Job.class);          
    jobLauncher.run(jobInstance, jobParameters);                   
}

private static JobParameters createJobParameters(String[] args) {
    // TODO: Create & return the needed parameters 
}
 类似资料:
  • 想法是,如果已经运行相同的作业,则不要启动作业。 作业资源管理器是简单注入到类中,其中是用于运行的计划方法 然后它被执行 这不是解决方案,因为如果JVM在作业运行时停止,这将与当前作业运行相同: 它将找到所有带有exitCode的作业ExitStatus.UNKNOWN. 在我看来,有3种解决方案: 解决方案一: 停止以前运行的未完成作业并运行新作业PROS:一切都干净,只有一个属性 续:失去当前

  • 我已经将我的Spring批处理配置为每当通过API调用从UI发出请求时触发作业。我面临的问题是,该作业仅在第一次和其他尝试时工作正常,每当调用时,作业不会以预期的方式响应。似乎他们正在尝试恢复,但我想再次重新启动整个执行。感谢您提前提供的任何帮助。 主要的班 配置班 JobListener.class 我的听众。班 Controller.class 应用属性 首次发出API请求时的响应 其他时间的

  • 我有一个带有cron作业spring boot项目。作业只应运行一次。它应该再次触发,只有当应用程序崩溃或应用程序重新启动。对此有什么cron表达式吗?或者有什么办法可以实现这一点?

  • 问题内容: 我每天如何每六个小时运行一次命令?试过这不起作用: 问题答案: 您忘记了,并且您有太多字段,这是您需要关心的时刻 这意味着每6小时从0开始,即在0、6、12和18小时,您可以将其写为

  • 问题内容: 我希望添加一个条目,以每隔30分钟,每小时的零零几点和接近小时的30分钟执行一次脚本。我有以下内容,但它似乎无法在0上运行。 我需要使用什么字符串? cron在OSX上运行。 问题答案: 做:

  • 问题内容: 我需要设置一个cron作业,每小时运行一次使用gcc编译的可执行文件。 我以root用户身份登录并输入 然后我输入以下内容并保存文件。 但是,cron作业不起作用。 我看到当我输入文字时会遇到细分错误。我只能从可执行文件所在的文件夹中执行该可执行文件。有什么办法可以解决此问题? 问题答案: 除非有其他需要设置的程序才能运行,否则它应该可以正常工作。