3
학습 목적으로 원격 액터에서 데이터를 가져 오는 간단한 재생 응용 프로그램을 구현하려고합니다. 액터의 코드는 다음과 같습니다 :Play framework 2.0 - Actor 대신 deadLetters
import akka.actor.{Props, ActorSystem, Actor}
class NumbersServer extends Actor {
var number = 0
protected def receive = {
case 'next => {
number += 1
number
}
case 'reset => number = 0
case 'exit => context.stop(self)
case 'get => sender ! number
}
}
object Server {
def main(args: Array[String]) {
val system = ActorSystem("ServerSystem")
val server = system.actorOf(Props[NumbersServer], "server")
}
}
나는이를 jar 파일로 패키지화하고 명령 행에서 시작합니다. 다른 창에서 열린 Scala 콘솔에서이 액터로 메시지를 보내려고하면 모든 것이 정상적으로 작동합니다. 이제 Play 프레임 워크에서 액터를 가져오고 싶습니다.
이object Client {
import play.api.Play.current
val actor = Akka.system.actorFor("akka://[email protected]:2552/user/server")
}
numbers.html.scala
파일 :
@(message: String)
@main("Header") {
<h1>@message</h1>
}
그래서 내가 기대
def numbers = Action {
Ok(views.html.numbers(Client.actor.path.name))
}
는 그 다음
models
패키지에 내가 클라이언트 오브젝트를 정의하십시오
Application
객체에서 나는 다음과 같은 방법을 정의
127.0.0.1:9000/numbers
에 가면 서버 액터에 대한 경로가있는 페이지가 생깁니다. 이 대신에 나는
<h1>deadLetters</h1>
이됩니다. 무엇이 잘못되었고 어떻게 올바르게 수행되어야합니까?
당신이 양쪽에서 원격을 사용하도록 설정 한 적이 추가? –
@ViktorKlang : 저는 일반 akka와 비슷한 방식으로 리모컨을 작동 시키려고했지만 akka-remote 패키지가 없으므로'java.lang.ClassNotFoundException : akka.remote.RemoteActorRefProvider'를 얻었으며 그 밖의 무엇이 있는지 확실하지 않습니다 할 것. –
Akka 문서는 다소 좋습니다. http://doc.akka.io/docs/akka/2.0/scala/remoting.html –