我有一个小游戏!应用程序(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/