gpt4 book ai didi

java - 基于Job参数配置Spring Batch Writer

转载 作者:行者123 更新时间:2023-11-30 06:16:52 26 4
gpt4 key购买 nike

我使用 Spring Boot 创建了一个简单的 Spring 批处理作业,它从我们的数据库中读取数据并写入主题。我还有一个钩子(Hook),可以注释掉 topicWriter 并在开发过程中写入 csv 文件。两者都通过注释一个作者并运行另一个作家来工作。 (主题作家或作家)。企业现在希望能够运行临时、主题或作家。因此,我选择传递包含主题或 csv 的输出参数。读完后,我似乎可以使用决策者,但这可能是错误的。现在,下面的代码提示重复的步骤,并且在我尝试运行时循环。我无法弄清楚如何在没有启动步骤的情况下运行,所以我创建了一个不执行任何操作的微线程,因为该作业之前需要一个启动步骤决定者。所以我想我把这一切都搞砸了。有解决方案或方向的想法吗?

   @Bean
public Job job(@Qualifier("step") Step step) {
return jobBuilderFactory.get(BatchConstants.JOB_NAME).listener(jobListener())
.start(step).next(decider()).on("COMPLETED").to(step1(null,null)).from(decider()).on("FAILED").to(step2(null,null)).end().build();
}


@Bean
protected Step step() {
return stepBuilderFactory.get("step")
.tasklet(new Tasklet() {
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) {
return RepeatStatus.FINISHED;

}
})
.build();
}

@Bean
protected Step step1(ItemReader<someDto> reader,
ItemWriter<someDto> topicWriter) {
return stepBuilderFactory.get(BatchConstants.STEP_NAME)
.<someDto, someDto> chunk(BatchConstants.CHUNKSIZE)
.reader(reader)
.writer(topicWriter) // write to kafka topic.
.build();
}


@Bean
protected Step step2(ItemReader<someDto> reader,
ItemWriter<someDto> writer) {
return stepBuilderFactory.get(BatchConstants.STEP_NAME)
.<someDto, someDto> chunk(BatchConstants.CHUNKSIZE)
.reader(reader)
.writer(writer) // writes to csv
.build();
}

最佳答案

在单步中,您可以使用 @StepScpoe 来定义它。根据作业参数,您可以选择编写器。

@Bean
@StepScope
protected Step step2(ItemReader<someDto> reader,
ItemWriter<someDto> writer ,ItemWriter<someDto> topicWriter,"#{jobParameters['writerType']}") final String type ) {

ItemWriter<someDto> myWriter;
if(type.equals("topic"))
{
myWriter=topicWriter;
}
else
{
myWriter=writer;
}

return stepBuilderFactory.get(BatchConstants.STEP_NAME)
.<someDto, someDto> chunk(BatchConstants.CHUNKSIZE)
.reader(reader)
.writer(myWriter)
.build();
}

关于java - 基于Job参数配置Spring Batch Writer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48998154/

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