为了账号安全,请及时绑定邮箱和手机立即绑定

如何选择应在 Spring Batch + Spring Rest API 中运行的作业

如何选择应在 Spring Batch + Spring Rest API 中运行的作业

喵喔喔 2022-06-23 09:10:28
我正在尝试实现 2 个 Spring Batch 作业,这些作业将在使用端点时运行。既然 JobLauncher 方法对它们来说都是一样的,那么你如何选择要执行哪一个呢?@Autowiredprivate JobLauncher jobLauncher;@Autowiredprivate Job job;@RequestMapping(        value = "/expired",        method = RequestMethod.GET,        produces = MediaType.APPLICATION_JSON_UTF8_VALUE,        params = {"expireDate"})@ResponseBodypublic ResponseDTO expiredJob(@RequestParam(value = "expireDate") String expireDate) throws BusinessException, Exception {    if (!DateValidator.isDateFormatValid(expireDate)) {        throw new BusinessException(ExceptionCodes.DATE_FORMAT_ERROR);    }    JobParameters jobParameters = new JobParametersBuilder().addString("expireDate", expireDate).toJobParameters();    jobLauncher.run(job, jobParameters);    ResponseDTO responseDTO = new ResponseDTO();    return responseDTO;}@RequestMapping(        value = "/lucky",        method = RequestMethod.GET,        produces = MediaType.APPLICATION_JSON_UTF8_VALUE)@ResponseBodypublic ResponseDTO rciplusJob() throws BusinessException, Exception {    JobParameters jobParameters = new JobParameters();    jobLauncher.run(job, jobParameters);    ResponseDTO responseDTO = new ResponseDTO();    return responseDTO;}
查看完整描述

1 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

你可以像我一样这样做。


我假设您为每个作业都有一个春季批处理作业配置。例如:


@Bean(name = "job1")

public Job job1() {

    return jobBuilders.get("job1")

            .incrementer(new RunIdIncrementer())

            .flow(step1())

            .end()

            .build();

}

和job2一样:


@Bean(name = "job2")

public Job job2() {

    return jobBuilders.get("job2")

            .incrementer(new RunIdIncrementer())

            .flow(step2())

            .end()

            .build();

}

现在在您的控制器中,您只需自动连接两个作业:


@Autowired

@Qualifier("job1")

private Job job1;


@Autowired

@Qualifier("job2")

private Job job2;

要启动它们中的每一个,您可以这样做:


final JobExecution jobExecution = jobLauncher.run(job, jobParameters);


查看完整回答
反对 回复 2022-06-23
  • 1 回答
  • 0 关注
  • 114 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号