2013-03-10 25 views
9

Có thể tạo một ngày trong JodaTime và sau đó đặt Quartz lên lịch công việc bằng cách sử dụng đối tượng JodaTime không? Chúng ta có thể đưa ra một thời gian jodaPeriod để Quartz API để chạy một nhiệm vụ cho một khoảng thời gian cụ thể trong một ngày?Bất kỳ mối quan hệ nào giữa API Quartz và API thời gian Joda?

Hai API có liên quan và/hoặc tương thích theo bất kỳ cách nào không?

+0

Bạn có muốn lên lịch một công việc lặp lại tại một khoảng thời gian được chỉ định bởi khoảng thời gian Joda không? – darrenmc

+0

@darrenmc - không chỉ một trường hợp sử dụng. Tôi muốn có thể làm mọi thứ mà thạch anh có thể làm, nhưng tốt hơn là sử dụng joda. –

Trả lời

2

AxonFramework có QuartzEventScheduler trông giống như những gì bạn muốn.

Đây là downlaod page và theo giấy phép Apache 2.0.

+0

CQRS (Axon là một khung CQRS) là phân đoạn trách nhiệm truy vấn lệnh - http://martinfowler.com/bliki/CQRS.html –

+0

Edd- bạn có thể cho tôi một số ví dụ khác như thế này không? Có vẻ như khuôn khổ này chỉ sử dụng một phần nhỏ của Quartz và joda. Dường như không có sự hỗ trợ để thực hiện nhiệm vụ nhiều lần sau một khoảng thời gian hoặc Thời lượng Joda nhất định. Tôi đang tìm kiếm sự tích hợp hơn giữa hai người. –

2

Quartz cung cấp một API khá toàn diện mà bạn có thể mở rộng dù bạn muốn.
Móc mà bạn cần tạo sẽ chống lại giao diện Trigger, trước đây tôi đã tạo giao diện nhưng không sử dụng thời gian Joda.

Từ âm thanh của câu hỏi nếu bạn muốn tạo công việc chạy trong một khoảng thời gian cụ thể trong ngày, bạn cũng có thể thử sử dụng CronTrigger. Ví dụ để chạy mỗi phút 9:00-11:00 bạn có thể làm

* 9-10 * * * 

Rõ ràng Joda làm cho nó dễ dàng hơn để cấu hình nhưng quản trị hệ thống của bạn tôn trọng bạn hơn cho cron ...

2

Tôi đã bắt đầu sử dụng Joda Thời gian trong các phần mới hơn của ứng dụng của công ty tôi và tôi đã tìm thấy nó dễ dàng hơn để liên kết với các phần cũ (bao gồm cả lịch trình Quartz) bằng cách chuyển đổi đối tượng Joda Time trở lại java.util.Date mà các phần cũ vẫn đang chờ đợi. Tôi hi vọng cái này giúp được.

+0

có, nhưng đó là thủ công. Nhưng, tôi muốn tránh ngày vì hầu hết nó không được chấp nhận và khả năng Joda sẽ thay thế hệ thống thời gian hiện tại. –

+1

JSR-310 (threeten) https://github.com/ThreeTen/threeten sẽ tăng thêm ngày chứ không phải là Joda trong Java 8. Họ có điểm tương đồng, nhưng cũng có nhiều cải tiến trong threeten trên Joda. – Jim

2

TriggerBuilder có một đoạn làm thế nào để sắp xếp một công việc bằng tay:

JobDetail job = newJob(MyJob.class) 
     .withIdentity("myJob") 
     .build(); 

Trigger trigger = newTrigger() 
     .withIdentity(triggerKey("myTrigger", "myTriggerGroup")) 
     .withSchedule(simpleSchedule() 
      .withIntervalInHours(1) 
      .repeatForever()) 
     .startAt(futureDate(10, MINUTES)) 
     .build(); 

scheduler.scheduleJob(job, trigger); 

Bạn sẽ phải làm một số công việc chuyển đổi cho startAt() và withIntervalInHours() ... bạn sẽ có được trôi

+0

+1 cho ví dụ. Tôi ước rằng Quart bổ sung thêm một số hỗ trợ joda được xây dựng. Nếu không, tôi sẽ phải thực hiện tất cả chuyển đổi và trích xuất trường theo cách thủ công. –