相关疑难解决方法(0)

以编程方式使用Spring调度作业(动态设置fixedRate)

目前我有这个:

@Scheduled(fixedRate=5000)
public void getSchedule(){
   System.out.println("in scheduled job");
}
Run Code Online (Sandbox Code Playgroud)

我可以更改它以使用对属性的引用

@Scheduled(fixedRate=${myRate})
public void getSchedule(){
   System.out.println("in scheduled job");
}
Run Code Online (Sandbox Code Playgroud)

但是,我需要使用以编程方式获得的值,以便可以在不重新部署应用程序的情况下更改计划.什么是最好的方法?我意识到使用注释可能是不可能的......

java spring scheduled-tasks spring-annotations

63
推荐指数
5
解决办法
7万
查看次数

Java中lambda() - > {}的含义

我正在看下面的Stack Overflow答案: 如何在运行时更改Spring的@Scheduled fixedDelay

在代码中有以下行:

schedulerFuture = taskScheduler.schedule(() -> { }, this);
Run Code Online (Sandbox Code Playgroud)

我想知道lambda () -> {}在该代码中的含义.我需要在不使用lambdas的情况下编写它.

java lambda java-7 java-8 java-9

26
推荐指数
1
解决办法
2620
查看次数

Spring Boot:从数据库获取@Scheduled cron值

我正在使用Spring Boot并且在调度cron task数据库中存在的使用值时遇到问题.

暂时,我正在读取属性文件中的值,如下所示:

@Scheduled(cron= "${time.export.cron}")
public void performJob() throws Exception {
   // do something
}
Run Code Online (Sandbox Code Playgroud)

这很好用,但我没有从属性文件中获取值,而是想从数据库表中获取它们.有可能吗?怎么样?

java cron scheduled-tasks spring-boot

12
推荐指数
1
解决办法
2万
查看次数

根据与spring-boot @Scheduled批注一起使用的条件动态修改调度程序计时

我有一个调度程序,它以5秒的固定延迟触发。
我计划有多个调度程序,但是现在,让我们仅使用一个调度程序。

要求:应根据业务条件更改调度程序的fixedDelay
**例如,**默认fixedDelay5secs,但根据条件,它可以为6、8、10secs

因此,为了达到这个目的,我正在尝试修改fixedDelay。但这对我不起作用。

代码:
接口,带有延迟方法。

public abstract class DynamicSchedule{
        /**
         * Delays scheduler
         * @param milliseconds - the time to delay scheduler.
         */
        abstract void delay(Long milliseconds);

        /**
         * Decreases delay period
         * @param milliseconds - the time to decrease delay period.
         */
        abstract void decreaseDelayInterval(Long milliseconds);

        /**
         * Increases delay period
         * @param milliseconds - the time to increase dela period
        */
        abstract void increaseDelayInterval(Long milliseconds); …
Run Code Online (Sandbox Code Playgroud)

java spring scheduler scheduled-tasks taskscheduler

9
推荐指数
2
解决办法
1197
查看次数

使用 spring 调度程序重新安排任务

我有一个 spring 调度程序,它有三个具有不同触发器(cron 触发器)的任务。对于这些任务中的每一个,我都有一个可以修改 cron 表达式的 UI。我想在服务收到更新请求时重新安排任务。下面是我的调度程序配置。如何在运行时更改其中一项任务的计划(当 UI 发送更新数据库中的 cron 表达式的请求时)。使用下面的方法,调度器只更新下一个调度。即在调用触发器时调用 nextExecutionTime() 方法。

@Configuration
@EnableScheduling
public class Config implements SchedulingConfigurer {

    @Inject
    MyDao db;
    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
        ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
        taskScheduler.setPoolSize(10);
        taskScheduler.initialize();
        taskRegistrar.setTaskScheduler(taskScheduler);

        List<TaskConfig> conf = db.readTaks();
        conf.forEach((TaskConfig aTask) -> {
            taskRegistrar.addTriggerTask(new Runnable() {
                @Override
                public void run() {
                    System.out.println("Running task + " + aTask.getName());
                }
            }, new Trigger() {
                @Override
                public Date nextExecutionTime(final TriggerContext triggerContext) {
                    String expression = aTask.getCronExpression();
                    CronTrigger trigger = new …
Run Code Online (Sandbox Code Playgroud)

cron spring spring-scheduled

5
推荐指数
1
解决办法
2629
查看次数