나는 보낸 사람으로부터 메시지를 받고 그 메시지를 처리하고 처리 된 결과를 보낸 사람에게 다시 보내는 간단한 액터를 만들었습니다. 처리 된 메시지의 결과를 실제 보낸 사람에게 어떻게 보냅니 까?
나는 배우 모델과 보낸 사람을 통해 그 위의 요구 사항을 달성하기 위해 노력배우 번호 :
()
[INFO] [10/08/2016 23:21:50.438] [SimpleActorSystem-akka.actor.default-dispatcher-3] [akka://SimpleActorSystem/deadLetters] Message [java.lang.Integer] from Actor[akka://SimpleActorSystem/user/helloworld1#-233096668] to Actor[akka://SimpleActorSystem/deadLetters] was not delivered. [1] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
:
import akka.actor.{ActorRef, ActorSystem, Props}
object ActorApp {
def main(args :Array[String]) ={
val system = ActorSystem("SimpleActorSystem")
val actorObj1:ActorRef = system.actorOf(Props[HelloWorld],"helloworld1")
val res =actorObj1 ! "Hi"
println(res)
}
}
나는 아래의 출력을 가지고 :
import akka.actor.Actor
import akka.actor.Props
class HelloWorld extends Actor {
var result:Int =0
def receive = {
case dataStr:String =>result =process(dataStr)
sender ! result
}
def process(str:String):Int ={
str.length +30
}
}
ActorApp 코드
32
가 어떻게 보낸 사람에게 처리 결과를 다시 다시 보내려면 어떻게합니까 :나는 주요 개체 (ActorApp)에 다음과 같이 출력을 기대하고있다? 또한이 INFO 로그는 무엇을 말합니까?
그럼 언제, 송신자를 사용해야합니까? 메시지를 다른 다른 액터로 보내는 발신자입니까? –
아니요, '보낸 사람'은 메시지 보낸 사람입니다. '? '를 통해 액터 시스템으로 메시지를 보낼 때마다 akka는 그것을 추적 할만큼 멋지 기 때문에'sender!'를 통해 다시 전송 된 다음 메시지는'Future'를 해결하는 데 사용됩니다. – Reactormonk