Akkaフレームワークは、外部コードとの対話にのみ型付きアクターを使用することを推奨しています。ただし、akkaの標準的なアクターは型指定されていません。タイプセーフなアクターを作成するためのより良い方法はありますか?akkaの周りに他のアクターフレームワークまたはタイプセーフラッパーはありますか?
4 に答える
静的型付けのアクターが本当に必要な場合は、先に進んで、コード全体で型付きアクターを使用することもできます。これは、いくつかの理由で強くお勧めしません。
1.)システムが一連のRPCに退化するリスクがあります。アクターのreceiveメソッドは、すべてがメッセージパッシングに関するものであることを明確に示しています。型指定されたアクターのメソッドを呼び出すだけの場合は、それほど重要ではありません。
2.)俳優は本当にタイプを持っていません。実行中、アクターが処理できるメッセージは、それらのメッセージで何をするかと同様に、どの状態にあるかによって変わる可能性があります。これは多くのプロトコルをモデル化する優れた方法であり、AkkaアクターはFSMでファーストクラスのサポートを提供しています。
したがって、本当にやりたいのであれば、どこでもタイプされたアクターを自由に使用でき、それは機能しますが、解決しようとしている問題について真剣に考える必要があります。
コンパイル時のチェックについては、SynapseGridフレームワークを参照してください。これは、DataFlowトポロジを構築するSystemBuilderを定義します。構築中、通過するタイプがチェックされることが保証されます。次に、結果のシステムは、ネストされ適切に相互接続されたアクターを使用してRuntimeSystemに変換されます。
なぜこれがあなたにとって問題なのですか?処理できるメッセージに対してのみ呼び出されるakka.actor.Actor
タイプのreceiveメソッドがあります。PartialFunction
コンパイル時のチェックが必要なのはなぜですか?しかし、あなたの質問に答えるには、1つの方法は、外部APIの場合、ラッパーを作成してActorRef
、メッセージをアクターに送信することです。
物事は非常に速く進んでいます、私はアップデートを与えることを考えました1.タイプされた俳優は非推奨になり ました2.代わりにAkkaTypedの新しい概念がmomemntで開発されています
私が理解したように、これは型付きアクターシステムの決定的な解決策になるはずです。しかし、これは少なくとも3回目の試行であり、Akka 2.4で最も早く計画されているため、この主張はまだ証明されていません。
私は個人的に、両方のシステムが利用できることを楽しみにしています。既存のシステムはより動的なユースケース用であり、新しいシステムはより堅牢なユースケース用です。