gpt4 book ai didi

Spring Batch 作业采用先前的执行参数

转载 作者:行者123 更新时间:2023-12-04 13:58:34 25 4
gpt4 key购买 nike

我正在使用 spring 云数据流并创建了一个包含作业的 spring 云任务。此作业有一个名为 last_modified_date 的参数,该参数是可选的。在代码中,我指定了在 last_modified_date 为 null 的情况下采用哪个日期,即它没有作为参数传递。问题是,如果对于作业的一个实例我传递了 last_modified_date 但对于下一个我没有传递,它会在最后一次执行中选择一个,而不是将其作为 null 传递并从代码中获取它。

@Component
@StepScope
public class SalesforceAdvertiserLoadTasklet implements Tasklet {

@Value("#{jobParameters['last_modified_date']}")
protected Date lastModifiedDate;

private static final Logger logger =
LoggerFactory.getLogger(SalesforceAdvertiserLoadTasklet.class);

@Override
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext)
throws Exception {

if(lastModifiedDate == null) {
lastModifiedDate =
Date.from(LocalDate.now().minusDays(1).atStartOfDay(ZoneId.systemDefault()).toInstant());
}
logger.info("In Method: runSalesforceAdvertiserLoadJob launch started on last_modified_date {}",
lastModifiedDate);

logger.info("Getting advertisers from SalesForce");
try {
getAdvertisersFromSalesforceAndAddtoDb();
} catch (JsonSyntaxException | IOException | ParseException e) {
logger.error("ERROR--> {}", e.getMessage());
}
return RepeatStatus.FINISHED;
}
@Bean
public JobParametersIncrementer runIdIncrementor() {
return new RunIdIncrementer();
}
@Bean
public Job salesforceAdvertiserLoadJob() {
return jobBuilderFactory.get(SalesforceJobName.salesforceAdvertiserLoadJob.name())
.incrementer(runIdIncrementor())
.listener(batchJobsExecutionListener)
.start(stepsConfiguration.salesforceAdvertiserLoadStep()).build();
}

有没有办法可以阻止新作业实例从前一个作业实例中获取参数?

最佳答案

我认为您没有提供 JobParametersIncrementer给您的 JobBuilder .例子:

Job job = jobBuilderFactory.get(jobName)
.incrementer(new RunIdIncrementer())
.start(step)
.end()
.build();

关于Spring Batch 作业采用先前的执行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56524514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com