2016-06-01 2 views
0

"ビジネス"タイムアウトを持つ俳優がいるとします。私は、たとえ俳優が死んでいるか再起動しているサーバであっても、そのタイムアウトを起動したいと思います。私はその俳優を永続的なものとして創造します。Akka.net:タイムアウトメッセージが常に起動されることを確認する

これは、1台のサーバーに障害が発生してもタイムアウトが起動されるようにする最も良い方法は何ですか?

おかげ

答えて

1

私はこのようにそれを設定したい:

BA => (rqTimeoutMsg) => GDA => TM (waits) => BA => (confirmation) => TM => GDA 

BA =あなたのビジネスの俳優

GDA =保証された配信俳優(Akka.Persistence)

TM = timeoutManager

BAは「タイムアウト」要求を 'GDA'に送信します。タイムアウトマネージャーに転送します。それは時間X(スケジューラーを使用して、私は示唆したい)まで待ってからBAに「タイムアウト」を送信します。これはTMまたはGDAに直接確認する必要があります。

GDAとTMは一緒になって永続的なTimeoutManagerを形成するので、BAが話しているもの(requestTimeout、 'timeout'、confirmReceptionOfTimeoutを受け取ったとき)で1つのActorにまとめられます。

質問:ただし、(クラッシュした)再起動後にBAが存在することを確認するにはどうすればよいですか?

+0

質問について私の最初のアイデアは、「起きる」メッセージで特定の俳優を作り直すことです。これがベストプラクティスかどうかはわかりません。私はここにもっと多くのアイデアを持っています。 –

+0

前のコメントで述べたように、私はいつもTimeoutManagerを再作成できたと思います。 –

+0

このアイデアのTimeoutManagerは、起動時に作成されるシングルトン(ノードごと、またはクラスタ内で共有さえも)です。しかし、ビジネス俳優**のレクリエーションはどうですか? –

関連する問題