【问题标题】:Queue asynchronous task in Play! - correct way在 Play 中排队异步任务! - 正确的方法
【发布时间】:2013-02-20 08:57:50
【问题描述】:

我有一点玩! application(2.1, scala) 充当 Java 库的 RESTful 前端。此 Web 应用程序使用以下方式对任务进行排队以进行后台处理:

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

Tasks 控制器中。

目标是立即由 Java 库开始繁重的处理,但在后台。

随着 Scala 2.10 及其 futures and promises 的出现,重构队列以利用这个新 API 是否更有意义?

一般来说,我正在寻找一种能够执行当前由Resque Ruby 库实现的后台处理的方法,但也许有一个进程内内存队列。(Redis 支持的队列也可以) .

【问题讨论】:

    标签: scala playframework redis akka task-queue


    【解决方案1】:

    使用 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)
    

    【讨论】:

      猜你喜欢
      • 2023-03-27
      • 2019-02-14
      • 2019-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-01
      • 2018-02-18
      相关资源
      最近更新 更多