使用或不使用Camel的Akka Actors中的Quartz CronTriggers?

Kam*_*ula 7 cron scala apache-camel quartz-scheduler akka

我有一个Quartz CronTriggers的Db.我想将整个系统移植到一个基于Akka的后端,我目前正在构建.我正在考虑并思考如何做到这一点.

例如,CustomRouteBuilders和其他类似的东西.我尝试了Giovani的优秀Quartz-Camel-Akka集成示例,并对此印象深刻.现在,我的系统中有多个cron触发器,具有不同的用户创建的cron表达式.

如何使用此类依赖于用户的endpointUri对Camel Consumer Actors系统进行编程?想到了很多选择但却无法弄清楚任何事情.

请帮助我完成这项工作.我也对Quartz和Camel以外的其他想法持开放态度.我想坚持使用基于Akka的后端平台.我的系统由用户定义的作业组成,这些作业以用户定义的cron可形成时序触发.

Mar*_*ser 10

从cron表达式列表开始(例如从数据库中读取),您可以迭代列表并为每个元素启动一个石英消费者角色.这是一个例子:

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
    }
  }
}
Run Code Online (Sandbox Code Playgroud)