亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何選擇應在 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 關注
  • 109 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號