2011-09-28 3 views
1

발신자가 n 초마다 메시지를 보내는 발신자와 함께 2 명의 Akka 액터를 실행하려면 어떻게해야합니까? 아니오 Scala.Actors 라이브러리로 방법을 루프 - 반응하지 있기 때문에 나는 어떻게 든, 다음은 컴파일되지 않습니다 붙어이고 생산 : 메소드를 오버라이드 (override)Akka.Actors를 Scala.Actors와 비교하여 올바르게 설정하는 방법

유형 => Caller.this의 특성 배우에 나타납니다 .받다; 방법은받는 당신은 등호 발신자의 receive 후 서명이 누락 호환되지 않는 유형을

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

있습니다. 이를 사용하지 않으면 메소드가 Unit (유용한 값 없음)을 반환하는 것으로 정의되며, akka는 수신에서 PartialFunction[Any,Unit]을 반환해야합니다.

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

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

실제로 당신은 아마하는 ReceiveTimeout를 사용과 같이 할, 숙어 방법으로 로직을 구현하는
관련 문제