如何解决SpringBoot执行器未显示计划任务
我用SpringBoot创建了一个简单的演示应用程序,并包含了Actuator。 用@Scheduled注释的任务会显示在执行器中,但是以编程方式启动的任务则不会。有没有办法让他们也出现?
我已经注释了@EnableScheduling。
我的组件看起来像这样:
@Component
public class DemoComponent {
private final TaskScheduler scheduler;
public DemoComponent(TaskScheduler scheduler) {
this.scheduler = scheduler;
}
@PostConstruct
public void init() {
scheduler.scheduleAtFixedRate(() -> System.out.println("Hi"),1000);
}
@Scheduled(fixedRate = 1000)
public void work() {
System.out.println("Hello");
}
}
,执行器的结果仅显示带注释的任务:
{
"cron": [],"fixedDelay": [],"fixedRate": [
{
"runnable": {
"target": "com.example.demo.DemoComponent.work"
},"initialDelay": 0,"interval": 1000
}
],"custom": []
}
解决方法
看看https://github.com/spring-projects/spring-boot/pull/9623/commits/94b00a7b0681b050bba03b4c49edf2df2ec65376下的代码,我想您将需要向ScheduledTaskRegistrar
注册计划的作业,而不是直接向TaskScheduler
注册。因此,应执行以下操作:
@Component
public class DemoComponent {
private final ScheduledTaskRegistrar scheduler;
public DemoComponent(ScheduledTaskRegistrar scheduler) {
this.scheduler = scheduler;
}
@PostConstruct
public void init() {
scheduler.addFixedRateTask(() -> System.out.println("Hi"),1000);
}
@Scheduled(fixedRate = 1000)
public void work() {
System.out.println("Hello");
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。