私はこれを尋ねることは大丈夫です。私はakkaを使用していて、2人のアクターを持っています。そこでは、1つは開始/作成され、もう一方ははるかに遅くなります。急速に作成されたものは、他の人に何か(ask-pattern)を求め、メッセージはまだ開始されていないので、デッドレターに送られます。俳優がメッセージを送って待っているようにするための好ましい方法は何ですか?私は他の方法がないことを知らずに俳優の睡眠や何かを作ることを熱望していません。まだ作成されていないアクターにメッセージを送信しないようにするにはどうすればよいですか?
0
A
答えて
1
私は機能を使用しますbecome()/unbecome()
アクカーはアクターのために提供します。次のコードでslowActor
がfastActor
によって作成されると仮定しています。ここでのトリックは、が開始されているときと、何らかの作業を行う準備ができているときの2つのふるまいがfastActor
にあることです。 slowActor
が準備完了すると、fastActor
にメッセージを送信し、メッセージを受信できることを通知します。 fastActor
はとなり、終了した場合は再び動作を変更します。次に何をするかは、あなたの解決策になります。ここで
はガイドとしてモックコードは(私は、コードをコンパイルしていないと、それは多少の誤差が含まれる可能性があります)です。
case object Ready
case object DoWork
case object WorkDone
class FastActor extends Actor with ActorLogging {
val slowActor = context.actorOf(SlowActor.props)
context.watch(slowActor)
def receive = slowActorNotReadyBehavior
def slowActorNotReadyBehavior = {
case DoWork => log.warning("Slow actor in not ready, I am sorry...")
case Ready => context.become(slowActorReadyBehavior)
}
def slowActorReadyBehavior = {
case DoWork => (slowActor ? DoWork).pipeTo(self)
case Terminated(ref) =>
log.error("Slow actor terminated")
context.unbecome()
//... do something with slowActor
}
}
class SlowActor extends Actor {
override def preStart = {
context.parent ! Ready
}
def receive = {
case DoWork =>
//do something
sender ! WorkDone
}
}
関連する問題
- 1. スラックチャンネルにメッセージを送信するにはどうすればよいですか?
- 2. どのSMSが配信されていないか、または送信されていないか調べるにはどうすればよいですか?
- 3. webhookアドレスに投稿を送信しないようにするにはどうすればよいですか?
- 4. WiFiアクセスポイントからバナーを送信しないようにするにはどうすればよいですか?
- 5. jQueryでEnterキーを送信しないようにするにはどうすればよいですか?
- 6. フォームに入力値を送信しないようにするにはどうすればいいですか?
- 7. サーバーに304を送信しないようにするにはどうすればいいですか?
- 8. プロデューサがトピックに送信されたメッセージを受信できないようにするにはどうすればよいですか?
- 9. Grails 3でセッションが作成されないようにするにはどうすればよいですか?
- 10. フォームを2回送信しないようにするにはどうすればよいですか?
- 11. Backbone.jsがOPTIONSリクエストを送信しないようにするにはどうすればよいですか?
- 12. MPIで特定の宛先のないメッセージを送信するにはどうすればよいですか?
- 13. クライアントがメッセージを送信しないようにしてくださいsocket.io
- 14. QDialogがタスクバーにエントリを作成しないようにするにはどうすればよいですか?
- 15. iPhoneがiOS5でロックされているときにアプリがkillシグナルを送信しないようにするにはどうすればよいですか?
- 16. Jetty/GAEがさまざまなコンテキストパスに対して新しいセッションを作成しないようにするにはどうすればよいですか?
- 17. sqlalchemyがselectでトランザクションを作成しないようにするにはどうすればよいですか?
- 18. ReSharperがソリューションでフォルダを作成しないようにするにはどうすればよいですか?
- 19. ループ内で関数を作成しないようにするにはどうすればよいですか?
- 20. 送信されたメッセージを保存しないようにするにはどうすればよいですか?
- 21. ウィンドウに送信されるメッセージを傍受するにはどうすればよいですか?
- 22. フォームを送信するときにブラウザが新しいページにリダイレクトされないようにするにはどうすればよいですか?
- 23. UnsatisfiedLinkError:同期化されていないデフラータを作成するにはどうすればよいですか?
- 24. ウィンドウのタイトルバーに応答していないメッセージが表示されないようにするにはどうすればよいですか?
- 25. Vagrantがホスト型ネットワークを作成しないようにするにはどうすればよいですか?
- 26. Visual Studioが「プロパティ」フォルダを作成しないようにするにはどうすればよいですか?
- 27. fastcgiアプリにメッセージを送信/送信するにはどうすればよいですか?
- 28. CronJobでログファイルを作成できないようにするにはどうすればよいですか?
- 29. open_portでメッセージが流出しないようにするにはどうすればよいですか?
- 30. Stackが.dump-hiファイルを作成しないようにするにはどうすればいいですか?
感謝。興味深いかもしれませんが、遅い俳優は今のところ俳優の兄弟です。 – stian