Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Spring中实现后台进程_Java_Spring_Spring Boot - Fatal编程技术网

Java 在Spring中实现后台进程

Java 在Spring中实现后台进程,java,spring,spring-boot,Java,Spring,Spring Boot,我需要实现Spring进程,它检查数据库表中的新行并进行计算。我想实现无限循环,每10分钟触发一次 有没有办法用Spring Boot实现这一点?我总是可以使用Java线程,但可以肯定的是,最好让Spring来管理它。您可以尝试使用Spring Schedule 这是一位官员 从技术上讲,您可以使用@EnableScheduling启用计划,并使用@Scheduled(fixedRate=600000)注释任务 另一个可用于调整计划程序的选项: fixedRate:在调用之间以毫秒为单位执行带

我需要实现Spring进程,它检查数据库表中的新行并进行计算。我想实现无限循环,每10分钟触发一次


有没有办法用Spring Boot实现这一点?我总是可以使用Java线程,但可以肯定的是,最好让Spring来管理它。

您可以尝试使用
Spring Schedule

这是一位官员

从技术上讲,您可以使用
@EnableScheduling
启用计划,并使用
@Scheduled(fixedRate=600000)
注释任务

另一个可用于调整计划程序的选项:

  • fixedRate
    :在调用之间以毫秒为单位执行带注释的方法

  • fixedDelay
    :在上一次调用结束和下一次调用开始之间以毫秒为单位的固定时间段执行带注释的方法

  • cron
    :一个类似cron的表达式,扩展了通常的UN*X定义,包括第二个以及分钟、小时、月日、月日和星期日的触发器


查找以下示例代码

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class AppScheduler {

    @Scheduled(fixedRate = 10000)
    public void myScheduler() {
        System.out.println("Test print");
    }

}

看起来这个问题很老了,但我想回答。 请参见,您可以创建ThreadPoolTaskExecutor的对象并为其分配后台进程。 如果有人想看,这里是我的详细代码

首先要做的是,在ApplicationStarter类中添加这两个注释

@EnableAsync
@EnableScheduling
现在,在同一个类中创建TaskExcutor,并将其分配给具有名称的bean,以便可以在应用程序中的任何位置创建后台任务并附加到此bean

    @Bean(name="thPlExectr")
    public Executor getExecutor(){
        return new ThreadPoolTaskExecutor();
    }
现在在项目中的某个地方创建一个组件类,您将在其中创建后台任务。 在这里,您将提到您希望完成任务的频率。我想每5秒钟打印一次声明,你可以选择自己的频率,并给出自己的方法定义。另外,将其设置为异步,并将其与上面提到的TaskExecutor bean连接,这样它就不会中断应用程序的正常流程

@Component
public class BackgroundTasks {
    private static final Logger log= LoggerFactory.getLogger(BackgroundTasks.class);

    @Async("thPlExectr")
    @Scheduled(fixedRate = 5000)
    public void backTask(){
        log.info("Hi Vineet! I am a background task");
    }
}

看看cron或quarz jobsCan你可以用代码粘贴一些详细的示例吗?只需谷歌一下,你会发现文档和教程非常容易。有没有一种方法可以在不部署/取消部署应用程序的情况下重新启动它?也许会有帮助。此外,请参阅本文。请注意,Spring Schedule位于Quartz之上,因此如果使用
cron
,则表达式略有不同()。