2013-10-11 26 views
5

Ví dụ, tôi muốn viết chương trình Java để in "Hello World" vào mỗi 12 giờ sáng, làm cách nào tôi có thể sử dụng bộ lập lịch thạch anh để đạt được điều này?java lịch trình chạy bằng thạch anh tại thời điểm cụ thể

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

Như thế này? Tôi nên đặt phương thức in "hello world" ở đâu?

Trả lời

6

Bạn có thể sử dụng một biểu thức để sắp xếp việc thực hiện công việc. ví dụ:

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); 
} 

Xem http://www.cronmaker.com/ để tạo biểu thức khác. ví dụ. 0 0/1 * 1/1 * ? * mỗi phút để xem đầu ra. Xem thêm Cron Expressions.

+2

Thậm chí đơn giản hơn là cung cấp một biểu thức cron, bạn có thể sử dụng [CronScheduleBuilder # dailyAtHourAndMinute (int, int)] (http://quartz-scheduler.org/api/2.0.0/org/quartz/CronScheduleBuilder.html#dailyAtHourAndMinute%28int,%20int%29) phương pháp.Chỉ cần thay thế 'CronScheduleBuilder.cronSchedule (exp)' bằng 'CronScheduleBuilder.dailyAtHourAndMinute (0, 0)'. Thật vậy, nó sẽ dịch giờ và phút sang một biểu thức cron tương đương. – ssssteffff

+0

Bạn nói đúng. Nó sẽ đơn giản hơn, mặc dù ít cấu hình hơn. –

+0

cách thêm phương pháp của tôi? không phải lớp – marlonpya

0

Bạn phải tạo công việc tùy chỉnh của mình bằng cách triển khai giao diện Job và cung cấp phương thức thực thi của bạn. Trong phương thức thực thi, bạn có thể in "hello world". Sau đó, bạn có thể lên lịch công việc của bạn như thế này

scheduler.scheduleJob(job, trigger); 

Tham khảo link này cho từng chi tiết bước: Quartz tutorial

0

bạn có thể tạo biểu thức cron cho điều này. có công việc thạch anh bạn cần phải có đối tượng sau

  1. Job
  2. nhiệm vụ mà sẽ được liên kết với một công việc
  3. Cuối cùng tạo ra một kích hoạt và kết hợp một công việc để kích hoạt

Triggers của hai loại

Trình kích hoạt đơn giản, nơi bạn có thể kiểm soát công việc, bạn có thể chạy mỗi phút hoặc 10 phút v.v. bạn cũng có thể có thêm thông số

initial delay - to kick off 

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

Trong trường hợp bạn có thể sử dụng trình kích hoạt cron vì bạn muốn chạy hàng ngày lúc 12 giờ sáng.

Để biết thêm thông tin chi tiết và mẫu chương trình xem dưới đây liên kết

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

và khoảng biểu cron thạch anh, xem tài liệu thạch anh

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

1
  1. Tải thạch anh Jar Đặt trong dự án xây dựng thư mục lib
  2. Tạo Class (Job) mà từ đó bạn muốn sắp xếp công việc

    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. Tạo lớp cho lịch trình công việc của bạn

    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(); 
         } 
        } 
    } 
    
Các vấn đề liên quan