2017-11-16 10 views
0

특정 간격으로 배우에게 메시지를 보내야합니다.Akka 스케줄러가 완료되지 않았습니다.

  1. readLine() 바로 뒤에 넣어 :

     
    val sendSchedule = system.scheduler.schedule(0 milliseconds, 5 minutes, senderActor, doSomething()) 
    readLine() 
    

    object SendToActor extends App { 
    
        import Sender._ 
    
        val system: ActorSystem = ActorSystem("sender") 
    
        try { 
        val senderActor: ActorRef = system.actorOf(Sender.props, "sendActor") 
        val sendSchedule = 
         system.scheduler.schedule(0 milliseconds, 5 minutes, senderActor, doSomething()) 
        } finally { 
        system.terminate() 
        } 
    } 
    

    불행하게도, 스케줄러 내가 다음 중 하나를 수행하지 않으면 실행하지 않는 것 : 나는 다음과 같은 코드를 사용하고

  2. 그 후 Thread.sleep() 바로 넣어 :

     
    val sendSchedule = system.scheduler.schedule(0 milliseconds, 5 minutes, senderActor, doSomething()) 
    Thread.sleep(10000) 
    

스케줄러가 위에 코딩 된대로 실행되지 않는 이유가 있습니까? 일을하기 위해서 수면을 필요로하는 이유는 무엇입니까?

답변

3

아마 당신이 스케줄러를 정의한 직후 배우 시스템을 종료하기 때문입니다.

+0

의미가 있습니다. system.terminate()를 제거하면 프로세스가 표시됩니다. 그러나 예약 된 작업이 완료 될 때까지 try 블록을 활성화하지 않아야합니까?. 감사합니다. –

+1

No @ F.Lun,'system.scheduler.schedule'은 즉시 반환되고 호출자를 차단하지 않습니다. – mingchuno

관련 문제