gpt4 book ai didi

java - 无法读取 Tasklet/ItemReader 中的 REST 参数

转载 作者:行者123 更新时间:2023-12-02 09:11:40 25 4
gpt4 key购买 nike

我想设置一个新的批处理作业。

此作业应该从 Rest 接口(interface)接收一些参数(我正在使用 @EnableBatchProcessing 进行自动 JobScanning)。

我只希望每次休息调用时执行一次该工作 -> 这就是为什么我认为微线程将是首选武器。但我没有让@StepScope仅使用tasklet作业(似乎没有没有 block 的StepScope可用,但如果我错了,请纠正我)...

我的另一个想法是创建一个 ItemReader,它读取 JobParameters 并创建单个域对象(从参数),然后处理数据并写入虚拟 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 请求启 Action 业:myhost:8080/jobs/thisjobsname?name=testname

但唯一被记录的是 run.id。

最佳答案

i think a tasklet would be the weapon of choice. But i did not get @StepScope to work with a tasklet only Job (it seems as if there is no StepScope available without chunk but please correct me if i am wrong)...

您可以在微线程上使用@StepScope,下面是一个示例:

@Bean
@StepScope
public Tasklet tasklet(@Value("#{jobParameters['parameter']}") String parameter) {
return (contribution, chunkContext) -> {
// use job parameter here
return RepeatStatus.FINISHED;
};
}

然后使用tasklet创建步骤:

@Bean
public Step step() {
return this.stepBuilderFactory.get("step")
.tasklet(tasklet(null))
.build();
}

关于java - 无法读取 Tasklet/ItemReader 中的 REST 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59359218/

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