gpt4 book ai didi

java - Spring/Java 调度任务

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:59:20 24 4
gpt4 key购买 nike

我正在生成一个线程,它将不断从数据库中提取记录 block 并将它们放入队列中。该线程将在服务器加载时启动。我希望这个线程一直处于 Activity 状态。如果数据库中没有记录,我希望它等待一段时间后再检查。我正在考虑使用 spring task scheduler 来安排它,但不确定这是否正确,因为我只希望我的任务启动一次。在 Spring 中实现它的好方法是什么?

此外,我需要进行边界检查,以确保如果我的线程出现故障(由于任何错误或异常情况),它应该在一段时间后重新实例化。

我可以通过使用线程通信方法在 Java 中完成所有这些,但只是尝试在 Spring 或 Java 中是否有适用于此类场景的东西。

任何建议或指示都会有所帮助。

最佳答案

您可以使用@Scheduled 注释来运行作业。首先创建一个类,其方法用 @Scheduled 注释。

public class GitHubJob {

@Scheduled(fixedDelay = 604800000)
public void perform() {
//do Something
}
}

然后在你的配置文件中注册这个类。

spring-context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

<tx:annotation-driven/>
<task:annotation-driven scheduler="myScheduler"/>

<task:scheduler id="myScheduler" pool-size="10"/>
<bean id="gitHubJob" class="org.tothought.spring.jobs.GitHubJob"/>

</beans>

有关安排的更多信息,请访问 Spring Docs .

关于java - Spring/Java 调度任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15511965/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com