你好春天你好

问题描述 投票:16回答:3

我正在编写Spring Boot应用程序

我的要求是-如果添加新的xml文件,请在资源(src / main / resources)文件夹中。我应该阅读这些文件,并从每个文件中获取一些url和其他特定设置。对于这些网址,我需要每天下载数据..因此,新的调度程序工作将从网址和一些设置开始

新作业将在不同的计划时间内运行,这将使用xml文件中存在的cron表达式此外,文件将在任何时间点动态添加如何实现它。

spring-boot-actuator
3个回答
38
投票

如果要动态安排任务,则可以通过使用ExecutorService特别是ScheduledThreadPoolExecutor来无弹簧地完成任务>

Runnable task  = () -> doSomething();
ScheduledExecutorService executor = Executors.newScheduledThreadPool(Runtime.getRuntime().availableProcessors());
// Schedule a task that will be executed in 120 sec
executor.schedule(task, 120, TimeUnit.SECONDS);

// Schedule a task that will be first run in 120 sec and each 120sec
// If an exception occurs then it's task executions are canceled.
executor.scheduleAtFixedRate(task, 120, 120, TimeUnit.SECONDS);

// Schedule a task that will be first run in 120 sec and each 120sec after the last execution
// If an exception occurs then it's task executions are canceled.
executor.scheduleWithFixedDelay(task, 120, 120, TimeUnit.SECONDS);

2
投票

您可以在spring注释上执行此操作:

@Scheduled(fixedRate = 360000)
public void parseXmlFile() {
    // logic for parsing the XML file.
}

1
投票

尝试使用此库进行外部动态参数配置,实时监视:

https://github.com/tyrion9/mtask

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