2011-07-20 15 views
7

Ben Kuvars CronTriggers bir Db var. Tüm bu sistemi şu anda mimarlık yapıyorum bir Akka tabanlı arka uça bağlamak istiyorum. Bakıyordum ve bunun yapılabileceği yolları düşünüyorum. Örneğin, CustomRouteBuilders ve benzeri şeyler içinAkka Aktör içinde Quartz CronTriggers Camel kullanarak veya kullanmadan Aktörler?

. Mükemmel Quartz-Camel-Akka entegrasyon örneğini Giovani ile denedim ve oldukça etkilendim. Şimdi, sistemimde farklı ve kullanıcı tarafından oluşturulan cron ifadelerine sahip birden fazla cron tetikleyicisi var.

nasıl böyle bir kullanıcı bağımlı endpointUri yıllardan ile Deve Tüketici Actors bir sistem programlayabilir? Birçok seçenek düşündü ama henüz bir şey anlayamadım.

bu çaba içinde bana yardım edin. Ben de Kuvars ve Camel'in ötesinde başka fikirlere de açığım. Akka tabanlı backend platformuna bağlı kalmak istiyorum. Sistemim, kullanıcı tanımlı cron biçiminde zamanlamaları tetikleyen kullanıcı tanımlı işlerden oluşur. (Örneğin veritabanından okuma) cron ifadelerin bir listesi size liste yineleme ve her element için bir kuvars tüketici aktör başlayabileceğini başlayarak

cevap

9

.

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

harika: İşte bir örnek. Teşekkürler Martin. Bunu deneyeceğim. –

+0

Aslında benzer bir şey düşünüyordum ... ama yapmanın yollarından emin değildim. Kodunuz bunu çok daha net ve kolay hale getirir. –

İlgili konular