具有长时间运行任务的队列的演员设计

时间:2015-09-03 19:04:02

标签: java scala akka actor

我有一堆运行的actor需要将顺序排队的任务排队,一次一个。我需要一个actor来处理队列中的任务。是否可以创建一个actor并将对该actor的引用作为参数传递给每个作业(一个隐式队列)?实施例

演员:

class QActor extends Actor{
  def receive = {
    case input => sender ! doSomething(input)
  }
}

发件人

val future = myQActor ? msg
Await.result(future)

2 个答案:

答案 0 :(得分:4)

使用另一个actor及其邮箱作为队列很好,只是不要阻止发件人。

答案 1 :(得分:1)

你的方法看起来很好,但有一点需要注意。询问模式(?)需要隐式超时,之后如果没有收到回复,则Future会因超时错误而失败。如果您有多个actor同时要求您的QActor按顺序处理每个请求,则可能很难知道设置的合理超时是多少。最好使用myQActor ! msg并在发件人的Receive中实施处理程序以处理预期的响应。