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

只对特定计数重复石英作业

拓拔霄
2023-03-14

我需要在工作日的特定时间触发一份工作。这些工作日也是动态的,应该从db获取。此外,对于特定的计数,作业应该触发或重复自己。假设一个工作j应该在每一个星期一,星期三,星期五触发,重复计数15即3*5=15,所以它应该在接下来的3周内触发。

我尝试使用如下所示的cronexpression,但无法找到如何在特定计数后阻止作业触发。

   StringBuilder cronString = new StringBuilder("0 0 12 ? * ");
            if (plandata.Sunday == true)
                cronString.Append("SUN,");
            if (plandata.Monday == true)
                cronString.Append("MON,");
            if (plandata.Tuesday == true)
                cronString.Append("TUE,");
            if (plandata.Wednesday == true)
                cronString.Append("WED,");
            if (plandata.Thursday == true)
                cronString.Append("THU");
            if (plandata.Friday == true)
                cronString.Append("FRI,");
            if (plandata.Saturday == true)
                cronString.Append("SAT,");
            cronString.Append(" *");

            IJobDetail job = JobBuilder.Create<Demo>()
                .Build();
            ITrigger trigger = TriggerBuilder.Create()
                   //.StartAt((DateTime)plandata.StartDate)
                   .StartNow()
                   .WithPriority(1)
                   .WithCronSchedule(cronString.ToString())
                   .Build();

请给我一些建议,这样我就能达到我所需要的。

共有1个答案

邹普松
2023-03-14

cron调度没有只触发一定次数的概念。也许使用其他调度方法会更幸运。

EndAt可能更有帮助,看起来不管调度器如何,它都是可用的。

 类似资料:
  • 我知道这对terracotta的人来说是不公平的,但是有人尝试过使用Hazelcast在集群环境中使用计划作业吗? 我能想象到的最简单的实现是以下架构: 全局黑泽尔铸造锁,用于确保只有一台服务器启动了 Quartz 配置。 以分布式任务的形式运行实际任务。(这可以在以后完成,目前繁重的计划任务将需要处理触发分布式任务) 一旦持有锁的服务器关闭,另一台服务器就会获得锁。 我相信对于已经拥有Hazel

  • 现在我正在考虑一种方法,每个用户将为每个推迟的作业创建一个专用的,如下所示: 我可以在这里看到一个潜在的问题,即使用这种方法,我可以在Quartz Scheduler中快速创建数千个工作。以前我从来没有在Spring Scheduling中用Quartz调度过这么多的工作,不知道系统会如何处理。以这种方式实施系统是一个好主意吗?Spring Scheduling Quartz会不会处理这么多的工作

  • 和日志: 我在01.11.2013T23:19:26.000的作业,每隔2秒 我在01.11.2013T23:19:27.000的作业,每3秒 我在01.11.2013T23:19:28.000的作业,每隔2秒 我的工作时间01.11.2013t23:19:0.000,每隔2秒 我在01.11.2013t23:19:30.001的作业,每3秒 我的作业在01.11.2013T23:19:32.00

  • 问题内容: 假设我以这种方式配置了一个触发器: 触发器必须与另一个应用程序连接,并且如果存在任何问题(例如连接失败),则触发器应每10分钟重试任务五次,直到成功为止。有什么方法可以配置触发器使其工作? 问题答案: 来源 :自动重试Quartz中失败的作业 如果您想要一项不断尝试直到成功的工作,您要做的就是抛出一个带有标志的JobExecutionException,以通知调度程序在失败时再次触发它

  • 是否可以添加/删除/修改在Quartz Spring Boot中动态安排的作业(在运行时),由使用我的门户的最终用户。由于计划无法从外部访问,我不知道有什么办法。基本上,我需要将所有的时间表信息存储到数据库中并访问它们。Im构建的门户将被大量用户使用,实现这一目标的正确解决方案是什么? 否则我可以像下面这样使用cron吗 每5 mns扫描一次作业以实现此目的。

  • 我正在使用quartz调度器来调度一个Spring批处理作业。应用程序启动时没有任何异常,但它从不激发任何作业。 它运行得很成功,但经过更多的开发后,它停止了工作。我无法弄清楚我到底改变了什么配置导致了这一点。 有谁可以建议检查点在使用“JobRepositoryFactoryBean”,如果我没有或问题在其他地方。