当前位置: 首页 > 知识库问答 >
问题:

如何在Spring启动中重置计划(@计划)

贡光明
2023-03-14

我有一个spring boot应用程序,我需要每20秒刷新一次,所以我创建了这个:

@Scheduled(cron="*/20 * * * * *")
@GetMapping("/refresh")
public void refresh(){
    letterServiceI.refreshQueue();
}

它工作得很好,但当我向数据库中添加行时,在它为空之前,我想再次将计时器重置为20秒,有办法吗?

@Override
public Letter add(String name, String content, String pin) {

    if (letterRepositoryI.checkIfNotEmpty().isEmpty()){
        //if empty -> reset scheduler to 20 again
        
    }

共有1个答案

斜淳
2023-03-14

只要在数据库中添加新行,就可以调用带有@Scheduled(cron=“*/20*****”)注释的方法

如果你想让你的调度表达式更简洁,你可以使用@Schedula(fix edDelay=20, timeUnit=TimeUnit. SECONDS)

我承认这可能会导致计划的重置在手动调用后不久发生,但我找不到在留档中手动重置此计时器的方法。

 类似资料:
  • 如何在spring boot应用程序中测试计划的作业任务?

  • 我在Spring 3中使用@Scheduled annotation。我需要每周或每两周运行一些任务,所以我使用cron表达式作为参数,例如。 我的问题是,如果我将创建必须每7天运行一次的计划任务,并且在第6天我将重新启动服务器(与战争重新部署),它会重置这个计划任务(我需要再次等待7天)还是它会保存其状态并在第7天触发此任务?

  • 在此之前我问了一个问题。我的服务conifg是: 我编写了一个扩展mediator交易文件。该类返回文件名并向服务发送请求。服务没有输入消息。我要每天13:30的服务。我尝试添加新的计划任务。但是它不能工作?谁能告诉我如何设置这个计划任务? 我也不知道如何设置“固定服务器”。

  • 我有一个spring boot应用程序,其中有各种使用@scheduled注释的调度程序。有些调度是使用fixedRate设置的,有些则使用cron。fixedRate调度运行良好,但我注意到,在过去的一个月中,cron调度fire的实际时间每天会有1-2个小时的变化。 即cron设置为 会在凌晨3点开火而不是凌晨2点。也不是每天都在发生。它会连续几天同时运行,然后发生一些事情,每次运行时它会关闭

  • 问题内容: 我的Azure函数具有以下function.json,其日程表设置为每天9.30运行。我想要的是动态设置此json 的属性。当正在使用我的应用程序的客户端输入日期时,就会出现这种情况,该日期计划程序应该运行。 这可能吗? (还请注意,由于预算原因,我不想使用Azure Scheduler) 问题答案: 使用Kudu API更改function.json https://github.c

  • 我正在开发一个程序,在管理员指定的特定时间将文件上传到服务器,管理员输入多个值(小时、分钟)。 例子: 我将这些值保存在CSV文件中。 我运行此方法来安排上传的执行。它工作了两次,之后我收到一个错误: java线程“AWT-EventQueue-0”中出现异常。lang.NumberFormatException:用于输入字符串:java的“小时” 。lang.NumberFormatExcept