我有一个小游戏!应用程序(2.1,Scala),它作为Java库的一个REST前端。此Web应用将任务排队以进行后台处理,使用:

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

Tasks控制器中。
目标是立即通过Java库开始重处理,但是在后台。
随着scala 2.10及其futures and promises的出现,重构队列以利用这个新api是否更有意义?
一般来说,我正在寻找一种方法来执行ruby库当前实现的后台处理,但可能有一个进程内内存队列(redis支持的队列也可以)。

最佳答案

使用akka actor

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)

关于scala - Play中的队列异步任务! - 正确的方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14975745/

10-10 05:48