7

私は Quartz CronTriggers のデータベースを持っています。このシステム全体を、現在設計中の Akka ベースのバックエンドに移植したいと考えています。私はこれを行う方法を見て考えていました。

たとえば、CustomRouteBuilders やその他の同様のものです。Giovani による優れた Quartz-Camel-Akka 統合の例を試してみて、非常に感銘を受けました。現在、システムに複数の cron トリガーがあり、ユーザーが作成したさまざまな cron 式を使用しています。

このようなユーザー依存の endpointUri を使用して Camel Consumer Actors のシステムをプログラムするにはどうすればよいですか? 多くのオプションを考えていましたが、まだ何もわかりませんでした。

この努力で私を助けてください。また、Quartz と Camel 以外のアイデアにもオープンです。Akka ベースのバックエンド プラットフォームにこだわりたい。私のシステムは、ユーザー定義の cron 形成可能なタイミングで起動するユーザー定義のジョブで構成されています。

4

1 に答える 1

10

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
    }
  }
}
于 2011-07-20T10:31:53.207 に答える