2013-02-20 58 views
1

我有一點玩!應用程序(2.1,scala),它充當Java庫的RESTful前端。這個Web應用程序的任務隊列使用後臺處理:在Play中排隊異步任務! - 正確的方法

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

Tasks控制器。

目標是立即開始Java庫的重處理,但在後臺。

Scala 2.10和它的futures and promises的出現,重構排隊以利用這個新的API會更有意義嗎?一般來說,我正在尋找一種方法來執行後臺處理,如目前由Resque Ruby庫實現的那樣,但可能有一個進程內存隊列(Redis支持的隊列也可以)。

回答

0

使用阿卡演員

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)