2
원격 액터를 사용할 때 예기치 않은 동작이 있습니다. 나는 서버와 '클라이언트'를 가지고있다. 클라이언트는 서버 액터로 메시지를 보내고 서버는 응답합니다. 내가 '?' 연산자는 모두 예상대로 작동합니다. 나는 대답을 서버에서 다시 얻는다.답장이 'client'-actor에게 전송되지 않습니다.
서버 :
class HelloWorldActor extends Actor {
def receive = {
case msg => self reply (msg + " World")
}
}
object Server extends App{
Actor.remote.start("localhost",2552);
Actor.remote.register("hello-service",Actor.actorOf[HelloWorldActor])
}
클라이언트 : 클라이언트가 배우 그냥 대답에 반응하도록
object Client extends App {
// client code
val actor = remote.actorFor(
"hello-service", "localhost", 2552)
val result = (actor ? "Hello").as[String]
println(result)
}
는 지금은 코드가 변경되었습니다. 그러나 응답은 클라이언트로 다시 보내지지 않습니다. 대신 'ClientActor'- 인스턴스가 서버 하나에서 생성되고 거기에 응답이 전송됩니까?
수정 된 클라이언트 :
class ClientActor extends Actor {
def receive = {
case "Ask" =>{
val actor = remote.actorFor(
"hello-service", "localhost", 2552)
actor ! "Hello"
}
case response:String => println(response) // This executed on the server! That's not what I expect?
}
}
object Client extends App {
// client code
val client = actorOf[ClientActor].start();
client ! "Ask"
}
나는 무엇을 놓치고? Akka의 예상되는 동작입니까? 어떻게 대답을 클라이언트에게 다시 보내도록 강제 할 수 있습니까?
입력 해 주셔서 감사합니다.
네, 그렇습니다. 그것은 예상되는 행동을 가져온다. =) – Gamlor
행복한 hAkking !! –