【问题标题】:How to control Linux java cron jobs from web appication?如何从 Web 应用程序控制 Linux java cron 作业?
【发布时间】:2017-04-02 11:34:52
【问题描述】:

现在我们正在 Linux 环境中运行 java cron 作业。并且工作的开始/停止是通过腻子上的 Linux 命令完成的。它将每天自动安排。但我的要求是我想从 UI 控制那些 cron 作业(如 Spring Web 应用程序)。比如开始一个作业,停止一个作业,作业的当前运行状态。有没有可用的图书馆?请建议。谢谢。

【问题讨论】:

  • 我已经回答了几乎相同的要求,stackoverflow.com/questions/20546403/…>
  • 我已经回答了类似的要求stackoverflow.com/questions/20546403/…>看看这个
  • stackoverflow.com/questions/20546403/… 我已经回答了同样的要求

标签: java linux spring cron quartz-scheduler


【解决方案1】:

是的,有结帐:http://www.quartz-scheduler.org/

您可以配置 3 或 4 个 SQL 表,然后您可以列出所有作业、它们的状态、下次运行的时间等。

快速浏览示例:

 List<HashMap<String,Object>> jobs = new ArrayList<>();
 Scheduler sch = MyScheduler.getScheduler();
       for (String groupName : sch.getJobGroupNames()) {
        for (JobKey jobKey : sch.getJobKeys(GroupMatcher.jobGroupEquals(groupName))) {
             String jobName = jobKey.getName();
             String jobGroup = jobKey.getGroup();
             List<Trigger> triggers = (List<Trigger>) sch.getTriggersOfJob(jobKey);
             Trigger tg = triggers.get(0);
             Date nextFireTime = tg.getNextFireTime();

             System.out.println("[jobName] : " + jobName + " [groupName] : " + jobGroup + " - " + nextFireTime);

            HashMap<String,Object> jb = new HashMap<>();
             jb.put("triggerKey", tg.getKey());
             jb.put("triggerGroup", tg.getKey().getGroup());
             jb.put("triggerName", tg.getKey().getName());
             jb.put("nextFireTime", nextFireTime);
             jb.put("trigger_state", sch.getTriggerState(triggers.get(0).getKey()));
             jobs.add(jb);
        }
     }

【讨论】:

  • #Pedro Batista,我们不会从 Linux 环境中迁移 crons。他们只会在那里运行。并且需要从 Java Web 应用程序控制它们。这行得通吗?
  • 哦,我不这么认为。 Quartz 也支持 'cron like' 表达式,但两者是不同的。
【解决方案2】:

您可能想在 GitHub 上查看我们的 QuartzDesk Executor (QE) 免费和开源应用程序。 QE 是一个基于 Spring 的 Java Web 应用程序,构建在流行的 Quartz 调度程序 API 之上,开箱即用,它允许您调度以下类型的任务/作业的执行:

  • 本地可执行应用程序和脚本(例如 *.sh、*.exe、*.cmd、*bat)。
  • 远程可执行应用程序和脚本(通过 SSH)。
  • 外部化 Java Quartz 作业。
  • JDBC 查询。
  • HTTP(S) POST 请求。

由于 QE 是开源的,您可以对其进行扩展并添加您自己的自定义作业类型。

QE 旨在与我们的QuartzDesk 作业管理和监控平台一起使用,该平台提供附加功能和不错的 GUI。如果您决定尝试 QuartzDesk 平台,您将获得持久的执行历史、可视化的作业执行统计、作业执行通知(电子邮件、即时消息、SNMP 陷阱、Web 服务调用)、作业链等。

QuartzDesk 可以拦截执行作业产生的日志消息。这些日志消息对于所有当前正在执行的作业都是可见的,因此您可以在运行时查看您的作业当前正在做什么(!)。在执行历史视图中,您可以看到所有已完成作业执行的日志消息。对于 OS-native 作业(shell 脚本、可执行命令等),QuartzDesk 可以拦截这些作业在其标准和错误输出中生成的消息。

这是连接到 QE 实例的 QuartzDesk GUI 的样子:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    • 2015-01-08
    • 2022-11-24
    • 2012-11-06
    • 2019-10-13
    相关资源
    最近更新 更多