Dam*_*ian 13 spring spring-mvc spring-batch spring-boot
我正在尝试从控制器运行我的批处理作业.它将由cron作业或访问特定链接启动.我正在使用Spring启动,没有XML只是注释.在我当前的设置中,我有一个包含以下bean的服务:
@EnableBatchProcessing
@PersistenceContext
public class batchService{
@Bean
public ItemReader<Somemodel> reader() {
...
}
@Bean
public ItemProcessor<Somemodel, Somemodel> processor() {
return new SomemodelProcessor();
}
@Bean
public ItemWriter writer() {
CustomItemWriter writer = new CustomItemWriter();
return writer;
}
@Bean
public Job importUserJob(JobBuilderFactory jobs, Step s1) {
return jobs.get("importUserJob")
.incrementer(new RunIdIncrementer())
.flow(s1)
.end()
.build();
}
@Bean
public Step step1(StepBuilderFactory stepBuilderFactory,
ItemReader<somemodel> reader,
ItemWriter<somemodel> writer, ItemProcessor<somemodel,
somemodel> processor) {
return stepBuilderFactory.get("step1")
.<somemodel, somemodel> chunk(100)
.reader(reader)
.processor(processor)
.writer(writer)
.build();
}
}
Run Code Online (Sandbox Code Playgroud)
只要将@Configuration注释放在我的batchService类之上,作业就会在我运行应用程序后立即启动.它成功完成,一切都很好.现在我试图删除@Configuration注释并随时运行它.有没有办法从控制器发射它?
谢谢!
小智 22
您需要在src/main/resources中创建application.yml文件并添加以下配置:
spring.batch.job.enabled: false
Run Code Online (Sandbox Code Playgroud)
通过此更改,批处理作业将不会在Spring Boot启动时自动执行.并且在特定链接时将触发批处理作业.
在这里查看我的示例代码:https: //github.com/pauldeng/aws-elastic-beanstalk-worker-spring-boot-spring-batch-template
And*_*son 16
您可以通过编程方式启动批处理作业,并将JobLauncher其注入控制器.有关更多详细信息,请参阅Spring Batch文档,包括此示例控制器:
@Controller
public class JobLauncherController {
@Autowired
JobLauncher jobLauncher;
@Autowired
Job job;
@RequestMapping("/jobLauncher.html")
public void handle() throws Exception{
jobLauncher.run(job, new JobParameters());
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21407 次 |
| 最近记录: |