1

私は少し遊びます!Java ライブラリの RESTful フロントエンドとして機能する application(2.1, scala)。この Web アプリは、以下を使用してバックグラウンド処理のためにタスクをキューに入れます。

Akka.system.scheduler.scheduleOnce(Duration(0, SECONDS)) {
      new TaskWorker().run(batchId)
}

Tasksコントローラーで。

目標は、Java ライブラリによる負荷の高い処理をバックグラウンドですぐに開始することです。

Scala 2.10 とその先物と約束の出現で、この新しい API を活用するためにキューイングをリファクタリングすることはより理にかなっていますか?

一般に、 Resque Ruby ライブラリによって現在実装されているバックグラウンド処理を実行できるようにする方法を探していますが、おそらくインプロセス メモリ キューを持っています (Redis でバックアップされたキューも問題ありません)。

4

1 に答える 1

0

Akka アクターを使用する

case class BatchTask(id: Int)
class TaskActor extends Actor {
  def receive = {
    case BatchTask(batchId) => new TaskWorker().run(batchId)
  }
}

val taskWorker = context.actorOf(Props[TaskActor])

taskWorker ! BatchTask(batchId1)
taskWorker ! BatchTask(batchId2)
taskWorker ! BatchTask(batchId3)
于 2013-08-05T10:10:12.850 に答える