【发布时间】:2020-04-09 01:40:20
【问题描述】:
我想设置一个新的批处理作业。
这个 Job 应该从 Rest 接口接收一些参数(我正在使用 @EnableBatchProcessing 进行自动化 JobScanning)。
我只希望每次休息调用都执行一次工作 -> 这就是为什么我认为 tasklet 将是首选武器。但是我没有让@StepScope 只使用一个 tasklet 作业(似乎没有没有块的 StepScope 可用,但如果我错了,请纠正我)...
我的另一个想法是创建一个 ItemReader,它读取 JobParameters 并创建单个域对象(从参数),然后处理数据并写入 Dummy ItemWriter。
我尝试这样设置 ItemReader:
@Bean
@StepScope
public ItemReader<BatchPrinterJob> setupParameterItemReader(
@Value("#{jobParameters}") Map<String, Object> jobParameters) {
ItemReader<BatchPrinterJob> reader = new ItemReader<BatchPrinterJob>() {
@Override
public BatchPrinterJob read()
throws Exception, UnexpectedInputException, ParseException, NonTransientResourceException {
BatchPrinterJob job = new BatchPrinterJob();
LOG.info(jobParameters.toString());
return job;
}
};
return reader;
}
我尝试使用这样的 POST 请求开始作业:myhost:8080/jobs/thisjobsname?name=testname
但唯一被记录的是 run.id。
【问题讨论】:
标签: java rest parameters spring-batch