我有一个Db的石英CronTriggers。我想把整个系统移植到一个基于Akka的后端,我目前正在设计。我正在研究和思考可以做到这一点的方法。
例如,CustomRouteBuilders和其他类似的东西。我尝试了Giovani的优秀的Quartz-Camel-Akka集成示例,给我留下了深刻的印象。现在,我的系统中有多个cron触发器,它们具有不同的和用户创建的cron表达式。
如何使用这种依赖于用户的endpointUri对Camel Consumer Actor系统进行编程?我想了很多选择,但什么也想不出来。
请在这方面帮助我。除了Quartz和Camel之外,我还对其他想法持开放态度。我想坚持使用基于Akka的后端平台。我的系统由用户定义的作业组成,这些作业在用户定义的cron可形成时间触发。
发布于 2011-07-20 18:31:53
从cron表达式列表(例如,从数据库读取)开始,您可以遍历该列表,并为每个元素启动一个quartz使用者参与者。下面是一个例子:
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
}
}
}https://stackoverflow.com/questions/6758597
复制相似问题