1
に行く返信は、私は、次のユニットテストを持って死んでレターボックス
override def receive: Receive = {
case MakeXmlApiCall() => {
val status = Future {"someMessage"}
println("In SomeActor")
status onComplete {
case Success(message) => {
sender ! message
}
}
}
}
「SomeActorで」に印刷され、その制御がreceive
メソッドに達することを意味します。
しかし、私はまた、このメッセージを取得しています:
[INFO] [12/15/2016 18:42:29.463] [testSystem-akka.actor.default-dispatcher-3] [akka://testSystem/deadLetters] Message [java.lang.String] from Actor[akka://testSystem/user/$a#-1159394947] to Actor[akka://testSystem/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'.
はなぜユニットテストからdead-letter
ではなく、testProbe
に送信されたメッセージです。
どうしてですか?
AkkaアクタがすべてのメッセージをFIFOキューに保持する場合、送信者はどのように変更できますか? – octavian
'status.onComplete'を呼び出した後、receive関数が戻り、アクターが次のメッセージを処理するためです。先物は非同期で、呼び出しスレッドをブロックしません。 – Ryan
'status.pipeTo(sender())'は私のために働いた..恐ろしく..友人..ドキュメンテーションはhttp://doc.akka.io/docs/akka/current/scala/futures.html#use-withにここに行く - アクター –