Scala 我想将第二条消息作为新消息发送给演员
我有两个演员,例如,发件人:Scala 我想将第二条消息作为新消息发送给演员,scala,akka,Scala,Akka,我有两个演员,例如,发件人: class ActorSender(actroReciever: ActorRef) extends Actor{ implicit val timeout = Timeout(100, TimeUnit.SECONDS) override def receive: Receive = { case "RUN" => { val resp = Await.result(actroReciever ? "Msg", 100.seco
class ActorSender(actroReciever: ActorRef) extends Actor{
implicit val timeout = Timeout(100, TimeUnit.SECONDS)
override def receive: Receive = {
case "RUN" => {
val resp = Await.result(actroReciever ? "Msg", 100.seconds)
println("receive response " + resp)
};
case str:String => println(str)
case _ => println("Error type msg")
}
}
接受者:
class ActroReciever extends Actor{
override def receive: Receive = {
case str:String => {
val snd = sender()
snd ! "MessageFirst"
snd ! "MessageSecond"
}
}
}
以及开始上课的时间:
object Tester extends App {
val system = ActorSystem("system")
val receiver = system.actorOf(Props[ActroReciever](new ActroReciever()), "receiver")
val sender = system.actorOf(Props[ActorSender](new ActorSender(receiver)), "sender")
sender ! "RUN"
}
我想向sender()发送两条消息,第一条消息作为“询问”的回复,第二条消息作为“新消息”,哪个ActorSender执行“匹配”,我怎么做?谢谢首先,您知道不应该使用
等待
,对吗
其次,ask
(?
)不用于参与者<代码>询问创建一个只能接收一条消息的临时参与者。接收答案的不是你的ActorSender
,而是由ask创建的临时参与者。这就是为什么你觉得你只能发送一个答案
您这样做是错误的,您只需使用actroReciever发送消息即可!“Msg”
。无需更改您的ActorReciever
上的任何内容