2011-07-20 52 views
7

Tôi có một Db Quartz CronTriggers. Tôi muốn chuyển toàn bộ hệ thống này sang một chương trình phụ trợ dựa trên Akka mà tôi đang xây dựng. Tôi đã xem xét và suy nghĩ về cách thức này có thể được thực hiện.Quartz CronTriggers trong Akka Diễn viên sử dụng hay không sử dụng Camel?

Ví dụ: CustomRouteBuilders và các nội dung tương tự khác. Tôi đã thử ví dụ tích hợp Quartz-Camel-Akka tuyệt vời của Giovani và khá ấn tượng với nó. Bây giờ, tôi có nhiều trình kích hoạt cron trong hệ thống của tôi với các biểu thức cron khác nhau và do người dùng tạo.

Làm cách nào tôi có thể lập trình hệ thống của các diễn viên tiêu dùng Camel với điểm cuối của người dùng phụ thuộc như vậy? Đã suy nghĩ của nhiều lựa chọn nhưng không thể tìm ra bất cứ điều gì được nêu ra.

Hãy giúp tôi trong nỗ lực này. Tôi cũng cởi mở với những ý tưởng khác ngoài Quartz và Camel. Tôi muốn gắn bó với nền tảng phụ trợ dựa trên Akka. Hệ thống của tôi bao gồm các công việc do người dùng xác định kích hoạt tại thời điểm định dạng cron do người dùng xác định.

Trả lời

9

Bắt đầu từ danh sách các biểu thức cron (ví dụ: đọc từ cơ sở dữ liệu), bạn có thể lặp qua danh sách và bắt đầu diễn viên người tiêu dùng thạch anh cho mỗi phần tử. Dưới đây là ví dụ:

import akka.actor.Actor 
import akka.actor.Actor._ 
import akka.camel.CamelServiceManager._ 
import akka.camel.Consumer 

object CronExample { 

    def main(args: Array[String]) { 
    val cronExpressions: List[String] = ... // cron expressions read from database 

    startCamelService 

    cronExpressions foreach { cronExpression => 
     val timerName: String = ... // app-specific timer name for cronExpression 
     actorOf(new Scheduler(timerName, cronExpression)).start 
    } 
    } 

    class Scheduler(timerName: String, cronExpression: String) extends Actor with Consumer { 
    def endpointUri = "quartz://%s?cron=%s" format (timerName, cronExpression) 

    protected def receive = { 
     case msg => ... // react on timer event 
    } 
    } 
} 
+1

Tuyệt vời. Cảm ơn Martin. Sẽ thử điều này. –

+0

Tôi đã thực sự nghĩ về một cái gì đó tương tự ... nhưng không chắc chắn về cách để làm điều đó. Mã của bạn làm cho nó rõ ràng hơn và dễ dàng hơn nhiều. –

Các vấn đề liên quan