如何通过Nacos配置定时任务的开关和执行策略
更新时间:2026年06月12日 09:14:19 作者:qq_33369085
这篇文章主要介绍了如何通过Nacos配置定时任务的开关和执行策略问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
1.首先加上配置文件(使用ConfigurationProperties)
ConfigurationProperties可实现自动获取最新的配置
@Component
@Data
@ConfigurationProperties(prefix = "scheduletask")
public class ScheduledProperties{
@Value("${taskSwitch:1}")
private Integer taskSwitch;
@Value("${taskCronTrigger:0/10 * * * * ?}")
private String taskCronTrigger;
}
2.定时任务实现类
@Component
@Slf4j
public class ScheduledTask implements InitializingBean {
private static ScheduledFuture<?> future = null;
@Autowired
private ThreadPoolTaskScheduler threadPoolTaskScheduler;
@Autowired
private ScheduledProperties scheduledProperties;
//监听定时任务的配置是否发生修改
@EventListener
public void envChangeListener(EnvironmentChangeEvent event) {
Set<String> keys = event.getKeys();
if(CollectionUtils.isNotEmpty(keys)){
//判断是否修改了定时任务的配置
boolean flag = keys.stream().anyMatch(x -> x.startsWith("scheduletask"));
if(flag){
log.info("定时任务配置发生改变");
//若已存在该定时任务,则停止重新创建
if(Objects.nonNull(future)){
future.cancel(true);
}
this.syncExec();
}
}
}
//创建定时任务
public void syncExec() {
if(Objects.equals(scheduledProperties.getTaskSwitch(),1)){
future = threadPoolTaskScheduler.schedule(() -> {
try {
//此处执行定时执行的程序
} catch (Exception e) {
log.error("定时任务执行异常:", e);
} finally {
}
}, new Trigger() {
@Override
public Date nextExecutionTime(TriggerContext triggerContext) {
String cron = scheduledProperties.getTaskCronTrigger();
if(StringUtils.isEmpty(cron)){
cron = "0/10 * * * * ?"; //默认配置:每10秒执行一次
}
return new CronTrigger(cron).nextExecutionTime(triggerContext);
}
});
} else {
if(Objects.nonNull(future)){
future.cancel(true);
}
}
}
/**
* 对象初始化完成后执行
*/
@Override
public void afterPropertiesSet() throws Exception {
this.syncExec();
}
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Java使用Spire.Doc for Java实现自动创建Word文档
在日常的软件开发中,我们常常会遇到需要程序化生成 Word 文档的需求,本教程将深入探讨如何利用 Spire.Doc for Java 这一强大库,帮助开发者掌握 Java 创建 Word 文档的核心技能,希望对大家有所帮助2025-10-10
SpringBoot的@GetMapping路径匹配规则、国际化详细教程
这篇文章主要介绍了SpringBoot的@GetMapping路径匹配规则、国际化,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧2023-11-11


最新评论