如何暂停和恢复基于某个kafka事件的spring批处理步骤

hgc7kmma  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(339)

我们正在尝试创建一个中央批处理服务,它将在远程(micro)服务中调用批处理过程。在此期间,我们希望暂停步骤执行,直到远程服务没有响应批处理服务。这在spring批处理中可以实现吗?

im9ewurl

im9ewurl1#

您可以尝试实现steplistener,其中有beforstep和afterstep方法,您可以在beforstep方法调用中控制等待,直到其他服务调用完成其执行

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();
}

相关问题