私は長期間滞在しているWindowsサービスでakka.netのリモートアクターを使用しています。私はActorSelectionを使用してリモートアクターのIActorRefを取得し、このIActorRefを長時間アクティブに保ちます。 IActorRefは、別のWindowsサービスで実行されているアクターシステムを指します。 私は、リモートアクタを再起動しても、リモートアクタrefは無効にならないことを理解しています。ただし、リモートウィンドウサービスがある時点で再起動し、呼び出し元のWindowsサービスのIActorRefが無効になることが考えられます。古いakka.netリモートiactorrefを処理する方法
これを処理するためのベストプラクティスは何ですか? 単純なアプローチは、リモートアクタを呼び出すたびにActorSelectionを使用して新しいIActorRefを取得することです。これは明らかに非効率的である。
もう1つのアプローチは、例外をトラップし、actorselectionを使用して新しいIActorRefを取得して再試行する何らかの種類のエラー処理エンベロープで、そのIActorRefで行ったすべての呼び出しを単純にラップすることです。あるいは、エンベロープは、実際の呼び出しの前にテストコールを作成して、リモートアクタがまだ生きているかどうか、新しいアクタrefを取得していないかどうかを確認することができます。
もっと良い方法はありますか?
回答ありがとうございます。これは、俳優自身の内部にないコードから遠隔の俳優にメッセージを送信するときに、どのように動作するのでしょうか。たとえば、アクター選択を使用してリモートアクターにIActorRefを取得し、Ask()を介してメッセージを送信します。呼び出し側システムにはアクター自体がないので、終了メッセージを受け取る俳優はいません。私はこの目的のためだけに俳優を作ることができると思いますが、そのような専用の俳優を作ることなくこれを達成するための他の方法はありますか? – cfcal