我们正在尝试创建一个中央批处理服务,它将调用远程(微)服务中的批处理流程。在此期间,我们希望暂停步骤执行,直到远程服务不再响应批处理服务。 这可以通过 Spring Batch 实现吗?
最佳答案
你可以尝试实现StepListener,其中有beforeStep和afterStep方法,你可以在beforeStep方法调用中控制等待,直到其他服务调用完成执行
public class StepTwoListener implements StepExecutionListener {
@Override
public void beforeStep(StepExecution stepExecution) {
long start = System.currentTimeMillis();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Sleep time in ms = "+(System.currentTimeMillis()-start));
System.out.println("Before Step Execution");
}}
您可以在步骤中使用监听器
@Bean
public Step stepTwo() {
return stepBuilderFactory.get("stepTwo").tasklet(new StepTwo()).listener(new StepTwoListener()).build();
}
关于java - 如何根据某些 Kafka 事件暂停和恢复 Spring Batch 步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59292289/