2011-09-28 24 views
1

如何运行2名阿卡演员与主叫方发送的消费信息每N秒? 由于没有环反应的方法如在Scala.Actors库我卡住 某种方式,下面将不会编译并产生:设置Akka.Actors如何正确比较Scala.Actors

重写方法接收在类型=> Caller.this的性状演员。接收;方法收到了不兼容的类型

object Foo { 
    def init() { 
    actorOf[Caller].start() 
    actorOf[Consumer].start() 
    } 
} 

class Caller extends Actor { 

    def receive { 
    while (true) { 
     self ! "msg" 
     Thread.sleep(1000) 
    } 
    } 
} 

class Consumer extends Actor { 

    def receive = { 
    case msg:String => doStuff() 
    case e => _ 
    } 
} 

回答

3

你错过了equals来电显示receive后签字。如果没有它,该方法被定义为返回Unit(即没有有用的值),和阿卡需要你返回来自接收PartialFunction[Any,Unit]

现在,真正实现你的逻辑在惯用的方式,你可能想使用ReceiveTimeout,像这样:

class Caller extends Actor { 
    self.receiveTimeout = Some(1000) 

    def receive = { 
    case ReceiveTimeout => 
     self ! "msg" 
    } 
}