如何在Spring Boot中有条件地运行Scheduled作业

问题描述 投票:0回答:1

我预定了一段时间后不间断运行的工作。

现在我只想在满足条件的情况下运行此预定作业。该条件在运行时获得,并且不依赖于任何配置参数。

我如何实现这一目标。我知道Spring Boot 4.x提供了这个名为Condition的接口。但不知何故,我的代码不起作用。

在这里,是我的代码......

ScheduledTask

@Configuration
public class ScheduleTask {
  @Scheduled(fixedRateString = "5000")
  @Conditional(SchedulerCondition.class)
  public void pollDepots() {
      System.out.println("Running");
  }
}

Conditional Class

public class SchedulerCondition implements Condition {
    @Override
    public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
        return false;   
//Here some condition needs to be implemented which is not dependent on the parameters of this method.
    }
}

等待你的回复。祝你有个愉快的一天。

spring-boot conditional scheduled-tasks
1个回答
0
投票

您可以将计划任务拉到另一个班级:

public class ScheduledPollDepots {

    @Scheduled(fixedRateString = "1000")
    public void pollDepots() {
        System.out.println("Running");
    }
}

然后根据条件创建一个bean:

@Configuration
public class Config {

    @Bean
    @Conditional(SchedulerCondition.class)
    public ScheduledPollDepots pollDepots() {
        return new ScheduledPollDepots();
    }

}

根据您的日程安排条件:

public class SchedulerCondition implements Condition {
    @Override
    public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
        return false;
    }
}

它应该正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.