java - 如何根据某些 Kafka 事件暂停和恢复 Spring Batch 步骤

标签 java spring-boot apache-kafka spring-batch

我们正在尝试创建一个中央批处理服务,它将调用远程(微)服务中的批处理流程。在此期间,我们希望暂停步骤执行,直到远程服务不再响应批处理服务。 这可以通过 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/

相关文章:

java - 如何使用 XML Java DOM 重新排序节点

java - Spring Boot 启用 http/2 协议(protocol)

java - spring-cloud-starter-stream-kafka 不会创建提供给 spring.boot.cloud.stream.bindings.output.destination 的主题

java - 选择第二个文本字段后 Runtime.getRuntime().exec 不起作用

java - 在继承层次结构中实现健壮的 equals() 和 hashCode() 方法的正确方法是什么?

java - 什么是 NullPointerException,我该如何解决?

java - 致命 BeanException : EmbeddedServletContainerFactory implementation cannot be instantiated

spring - 如何在 Spring Boot 中关闭调试日志消息

apache-kafka - react 堆 Kafka : ReactiveKafkaProducerTemplate

stream - 卡夫卡流 - 如何分组两次?