2010-10-31 30 views
6

Tôi đang sử dụng Quartz để tạo một ThreadPool được nhóm và tôi có số lượng tác vụ chạy vào các thời điểm khác nhau. Cách tốt nhất để chạy 1 nhiệm vụ là gì và chỉ một lần trên ThreadPool được nhóm lại. Tôi biết tôi có thể đặt nhiệm vụ thành ưu tiên cao. Nhưng cách tốt nhất để đăng ký tác vụ "một lần" là gì?Thao tác một lần ngay lập tức với Quartz

Trả lời

4

tôi cảm thấy như tôi phải mất một cái gì đó, hoặc có thể bạn chỉ cần bỏ qua bit này trong các tài liệu:

public SimpleTrigger(String name, String group, Date startTime, Date endTime, int repeatCount, long repeatInterval)


SimpleTrigger trigger = new SimpleTrigger("myTrigger", 
              null, 
              new Date(), 
              null, 
              0, 
              0L); 
+2

repeatInterval không thể không hoặc SimpleTrigger sẽ ném một org.quartz.SchedulerException trong xác nhận. – Aidamina

+2

Điều này không hiệu quả đối với thạch anh 2.2.1. tôi nhận được một lỗi nói rằng không thể khởi tạo SimpleTrigger – AD14

+0

Sẽ làm việc với thạch anh ~ 1.6 nhưng không phải với ~ 2.1 –

11

Bạn cũng có thể sử dụng lớp TriggerBuilder để làm cho cuộc sống của một dễ dàng hơn một chút. Nó tương tự như những gì đã được đăng trước đây, chỉ cần một chút sạch hơn.

Trigger trigger = TriggerBuilder.newTrigger() 
    .startNow() 
    .build(); 
+0

Điều này làm việc cho thạch anh 2.2.1 để kích hoạt công việc chỉ một lần. – AD14

+0

Tôi dường như không thể tìm cách thêm lệnh misfire vào trình kích hoạt này? – pkrish

2

Cách đơn giản nhất để kích hoạt một one-shot cho một công việc trước đã đăng ký:

Scheduler sched = ... 
scheduler.triggerJob(jobKey); 
Các vấn đề liên quan