【问题标题】:Allow the end user to schedule task with Spring Boot允许最终用户使用 Spring Boot 安排任务
【发布时间】:2017-08-28 08:27:21
【问题描述】:

我正在使用 Spring Boot,我想允许最终用户根据需要安排任务。

我有一个带有 Angular 前端的 Spring Boot REST 后端。用户应该能够(使用 crontab 样式语法)安排任务(即类的方法后端),并选择一些参数。

用户还应该能够从前端查看、编辑、删除计划任务

我知道我可以使用@Scheduled 注解,但我看不到最终用户如何使用它来安排任务。我也看看 Quartz,但我没有看到如何在我的方法调用中设置用户的参数。

我应该使用 Spring Batch 吗?

【问题讨论】:

  • 用户应该配置 cron tab 语法还是只是开始一个工作?
  • 用户应该配置 cron tab 语法
  • 我认为您必须更具体地说明事情应该如何工作。用户应该如何安排任务?使用请求、任何前端或直接访问属性文件等等?最后,有一些解决方案可以让这些东西正常工作。例如,将 cron 选项卡存储在数据库中并在您的应用程序中配置作业。
  • 用户应该使用 Angular 前端配置他们的任务。他们应该能够在前端添加、编辑、删除任务

标签: spring-boot scheduled-tasks


【解决方案1】:

要以编程方式安排作业,您有以下选项:

  • 对于简单的情况,您可以查看ScheduledExecutorService,它可以安排命令在给定延迟后运行,或定期执行。它包含在 java.util.concurrent 包中,易于使用。
  • 要动态调度Crontab作业,可以使用quartz和here's official examples,基本上你要做的是:

    • 创建实例Scheduler,Spring可以定义为java bean和autowire,示例代码:
    • 创建JobDetail
    • 创建CronTrigger
    • 安排jobcron

官方示例代码(计划每20秒运行一次):

SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();

JobDetail job = newJob(SimpleJob.class)
.withIdentity("job1", "group1")
.build();

CronTrigger trigger = newTrigger()
.withIdentity("trigger1", "group1")
.withSchedule(cronSchedule("0/20 * * * * ?"))
.build();

sched.scheduleJob(job, trigger);

【讨论】:

    猜你喜欢
    • 2012-09-27
    • 2021-08-27
    • 1970-01-01
    • 2018-09-18
    • 1970-01-01
    • 1970-01-01
    • 2019-04-22
    • 2018-03-14
    • 2017-09-15
    相关资源
    最近更新 更多