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

动态作业调度石英

卫俊誉
2023-03-14

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

否则我可以像下面这样使用cron吗

@Scheduled(cron = "0 5 * * * *")

每5 mns扫描一次作业以实现此目的。

共有1个答案

王景山
2023-03-14

这绝对有可能。

您只需自动连接调度程序,只要用户想更改任务,就可以使用调度程序#scheduleJob调度程序。使用调用JobDetailFactoryBean实例(表示作业)的方法删除作业。要创建cron作业触发器,请使用Triggerclass。

不可运行的代码摘录(EtlManager是我想要运行的方法的专有类,etlTask是包含运行频率等持久化信息的对象):

@Autowired
private Scheduler scheduler;

在对用户添加新任务作出反应的方法中:

        MethodInvokingJobDetailFactoryBean jobDetail = new MethodInvokingJobDetailFactoryBean();
        EtlManager em = this.appContext.getBean(etlTask.getTask().getExeClass(), EtlManager.class);
        jobDetail.setTargetObject(em);
        jobDetail.setTargetMethod("run");
        jobDetail.setName(etlTask.getAppTaskCode());
        jobDetail.setGroup(this.appCode);
        jobDetail.setConcurrent(false);

        jobDetail.afterPropertiesSet();

        Trigger trigger = TriggerBuilder.newTrigger().withIdentity("CRON" + etlTask.getTiming().getId(), this.appCode)
                .withSchedule(CronScheduleBuilder.cronSchedule(etlTask.getTiming().getCronExpression())
                .withMisfireHandlingInstructionDoNothing())
                .startAt(etlTask.getTiming().getStartAfter()) //
                .build();

        scheduler.scheduleJob((JobDetail) jobDetail.getObject(), trigger);

这里也有类似的QA,不确定是否100%重复:Java示例:使用Quartz的动态作业调度

 类似资料:
  • 问题内容: 我正在使用“石英计划”,并且有2个工作。第一项作业将执行大约2分钟的任务,第二项作业将被设置为清理临时文件。因此,我需要设置计划表,使其工作方式如下:在执行完第一项任务/完成任务后,我需要在第二项任务的帮助下进行清洁操作。 考虑示例9-Quartz 2.1.x下的作业侦听器,它声明我们可以定义一个名为jobWasExecuted(,)的方法;在Job Listener中,它在第一个作业

  • 当我启动石英调度程序时,它不会触发我的工作。我的工作被安排在每个小时。但是启动我的调度程序后,我的第一个工作在一个小时后被触发。我是石英新手。下面是我的石英启动代码

  • 我正在使用和以及集群模式下的oracle db,我正在使用所有quartz api,因为我面临spring支持的quartz api的问题。 我的作业类中有一些依赖项没有初始化,我在调度程序上下文中传递了这些依赖项,然后它就开始工作了。 问题是我的cron表达式是每5分钟运行一次

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

  • 问题内容: 我正在寻找python的企业任务计划程序,就像石英是Java一样。要求: 持久:如果进程重新启动或计算机重新启动,则所有作业必须保留在该位置,并且必须在重新启动后解雇。 作业必须在事务中进入和退出调度程序(即,如果某个数据库操作失败,在与调度程序无关的数据库中,则作业必须没有退出或进入调度程序)。 可扩展性。取决于项目成功的程度,但是我更希望从一开始就知道我不是从无到有来。 可配置性: