我试图以固定速率和初始延迟来调度来自spring-boot的服务,
在部署之后,我预计read方法应该在5秒后每隔10秒执行一次,但控制台中没有显示任何内容。下面是我的主要应用程序类
@SpringBootApplication
@EnableScheduling
public class ArgusAPIApplication {
@Value("${proxy.host}")
private String proxyHost;
@Value(("${proxy.port}"))
private int proxyPort;
@Value(("${readTimeout}"))
private int readTimeout;
@Value(("${connectTimeout}"))
private int connectTimeout;
public static void main(String[] args) {
SpringApplication.run(ArgusAPIApplication.class, args);
}
@Bean
public RestTemplate restTemplate() {
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
Proxy proxy= new Proxy(Type.HTTP, new InetSocketAddress(proxyHost,proxyPort));
requestFactory.setProxy(proxy);
requestFactory.setReadTimeout(readTimeout);
requestFactory.setConnectTimeout(connectTimeout);
return new RestTemplate(requestFactory);
}
}我希望服务以固定的时间间隔进行调度,下面给出了带有@Scheduled注释的方法的服务类
@Service
public class targusTractoscalingScheduler {
private static final Logger logger = LogManager.getLogger(targusTractoscalingScheduler.class);
@Autowired
targusController targusController;
@Autowired RestTemplate restTemplate;
private boolean firstTime = true;
@Value("aaaaaaaaaaaaaaaa")
private String apiKey;
@Value("xxxxxxxxxxxxxxxxxxxxxxx")
private String applicationKey;
@Value("${ddUrl}")
private String ddUrl;
@Value("/filter/instance")
private String ddInstanceApiPath;
@Value("/stop/job/{Tractoscalinggroup}")
private String ddStopJobPath;
/**
* Scheduler method that will run at every predefined interval.
*/
@Scheduled(initialDelayString = "5000", fixedRateString = "10000")
public void targusAsgAndCmdbASgCompare() {
List<targusData> targusDatas = targusController.gettargusData();
if (CollectionUtils.isEmpty(targusDatas)) {
logger.debug("Empty list obtained from targus, so simply exiting from method");
return;
}
processtargusData(targusDatas);
firstTime = false;
}但是服务没有触发,springboot文档也给出了类似的实现。
发布于 2018-11-20 08:45:33
下面是一个示例:
@EnableScheduling
@SpringBootApplication
public class MyExampleCronApplication {
public static void main(String[] args) {
SpringApplication.run(MyExampleCronApplication.class, args);
}
@Scheduled(initialDelay=5000,fixedRate=10000)
public void test() {
System.out.println(Date.from(Instant.now()).getSeconds());
}
}输出:

注:我通过将调度的方法放入服务中来分离代码,然后它就可以找到工作了。
https://stackoverflow.com/questions/53384434
复制相似问题