java石英调度程序在特定时间运行

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/19323208/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-12 16:05:57  来源:igfitidea点击:

java quartz scheduler run at specific time

java

提问by user2597504

For example, I want to write a Java program to print "Hello World" at each day 12 am, how can I use Quartz scheduler to achieve this?

比如我想写一个Java程序,在每天12点打印“Hello World”,如何使用Quartz调度器来实现呢?

Trigger trigger = TriggerUtils.makeDailyTrigger(0, 0);
trigger.setName("trigger1");
trigger.setGroup("group1");

Like this? Where should I put print "hello world" method?

像这样?我应该把打印“hello world”方法放在哪里?

采纳答案by Paul Vargas

You could use an expression to schedule the execution of the job. e.g.:

您可以使用表达式来安排作业的执行。例如:

public static class HelloJob implements Job {
    @Override
    public void execute(JobExecutionContext ctx) throws JobExecutionException {
        System.out.println("Hello World");
    }
}

public static void main(String[] args) throws SchedulerException {
    String exp = "0 0 0 1/1 * ? *";

    SchedulerFactory factory = new StdSchedulerFactory();
    Scheduler scheduler = factory.getScheduler();
    scheduler.start();
    JobDetail job = JobBuilder.newJob(HelloJob.class).build();
    Trigger trigger = TriggerBuilder.newTrigger()
                                    .startNow()
                                    .withSchedule(
                                         CronScheduleBuilder.cronSchedule(exp))
                                    .build();
    scheduler.scheduleJob(job, trigger);
}

See http://www.cronmaker.com/for build another expression. e.g. 0 0/1 * 1/1 * ? *every minute for to see the output. See also Cron Expressions.

请参阅http://www.cronmaker.com/以构建另一个表达式。例如0 0/1 * 1/1 * ? *每分钟查看输出。另见Cron Expressions

回答by coder

You have to create your custom job by implementing Job interface and providing your implementation of execute method.In execute method you can print "hello world". Then you can schedule your job like this

您必须通过实现 Job 接口并提供执行方法的实现来创建自定义作业。在执行方法中,您可以打印“hello world”。然后你可以像这样安排你的工作

scheduler.scheduleJob(job, trigger);

Refer this link for step by step details: Quartz tutorial

有关分步详细信息,请参阅此链接: Quartz 教程

回答by pappu_kutty

you can create cron expression for this. to have quartz job you need to have following objects

您可以为此创建 cron 表达式。要有石英工作,你需要有以下对象

  1. Job
  2. Task which will be associated to a Job
  3. Finally create a trigger and associate a Job to the trigger
  1. 工作
  2. 将与作业关联的任务
  3. 最后创建一个触发器并将一个 Job 关联到触发器

Triggers of two type

两种类型的触发器

Simple triggers, where you can control job , you can run every min or 10 mins and so on. you can also have additional parameters

简单的触发器,您可以在其中控制 job ,您可以每分钟或 10 分钟运行一次等等。你还可以有额外的参数

initial delay - to kick off

repeatcount - no of times the job should be executes, if -1 then job will be executed infinitely

In your case you can use cron triggers since you want to run every day at 12 am.

在您的情况下,您可以使用 cron 触发器,因为您希望每天上午 12 点运行。

For more details and sample program look at this below link

有关更多详细信息和示例程序,请查看以下链接

http://www.mkyong.com/spring/spring-quartz-scheduler-example/

http://www.mkyong.com/spring/spring-quartz-scheduler-example/

and about quartz cron expression , see the quartz documentation

关于石英 cron 表达式,请参阅石英文档

http://quartz-scheduler.org/documentation/quartz-1.x/tutorials/crontrigger

http://quartz-scheduler.org/documentation/quartz-1.x/tutorials/crontrigger

回答by Pankaj Girme

  1. Download quartz Jar Put in lib folder build project
  2. Create Class (Job) from which you want to schedule task

    import org.apache.log4j.Logger;
    import org.quartz.Job;
    import org.quartz.JobExecutionContext;
    import org.quartz.JobExecutionException;
    
    public class MyJob implements Job  {
        private Logger log = Logger.getLogger(MyJob.class);
        @Override
        public void execute(JobExecutionContext context) throws JobExecutionException {
    
            log.debug("Hi....");
            System.out.println("Corn Executing.....");
    
        }
    }
    
  3. Create Class for schedule your task

    import org.quartz.JobBuilder;
    import org.quartz.JobDetail;
    import org.quartz.Scheduler;
    import org.quartz.SchedulerException;
    import org.quartz.SchedulerFactory;
    import org.quartz.SimpleScheduleBuilder;
    import org.quartz.Trigger;
    import org.quartz.TriggerBuilder;
    import org.quartz.impl.StdSchedulerFactory;
    
    public class JobScheduler {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            try {
                JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity("myjob").build();
    
                Trigger trigger = TriggerBuilder.newTrigger().withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(30).repeatForever()).build();
    
                SchedulerFactory schFactory = new StdSchedulerFactory();
                Scheduler scheduler = schFactory.getScheduler(); 
                scheduler.start();
                scheduler.scheduleJob(job, trigger);
    
            }catch (SchedulerException e) {
    
                e.printStackTrace();
            }
        }
    }
    
  1. 下载quartz Jar 放入lib文件夹build工程
  2. 创建要从中安排任务的班级(作业)

    import org.apache.log4j.Logger;
    import org.quartz.Job;
    import org.quartz.JobExecutionContext;
    import org.quartz.JobExecutionException;
    
    public class MyJob implements Job  {
        private Logger log = Logger.getLogger(MyJob.class);
        @Override
        public void execute(JobExecutionContext context) throws JobExecutionException {
    
            log.debug("Hi....");
            System.out.println("Corn Executing.....");
    
        }
    }
    
  3. 创建课程以安排您的任务

    import org.quartz.JobBuilder;
    import org.quartz.JobDetail;
    import org.quartz.Scheduler;
    import org.quartz.SchedulerException;
    import org.quartz.SchedulerFactory;
    import org.quartz.SimpleScheduleBuilder;
    import org.quartz.Trigger;
    import org.quartz.TriggerBuilder;
    import org.quartz.impl.StdSchedulerFactory;
    
    public class JobScheduler {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            try {
                JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity("myjob").build();
    
                Trigger trigger = TriggerBuilder.newTrigger().withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(30).repeatForever()).build();
    
                SchedulerFactory schFactory = new StdSchedulerFactory();
                Scheduler scheduler = schFactory.getScheduler(); 
                scheduler.start();
                scheduler.scheduleJob(job, trigger);
    
            }catch (SchedulerException e) {
    
                e.printStackTrace();
            }
        }
    }