「正しい」アクターの実装を見つけようとしています。それらがたくさんあることに気づきました、そしてそれらを選ぶのは少し混乱しています。個人的には特にリモートアクターに興味がありますが、完全な概要は他の多くの人にも役立つと思います。これはかなり一般的な質問なので、あなたが知っている実装についてだけお気軽に答えてください。
私は次のScalaアクター実装(SAI)について知っています。不足しているものを追加してください。
Scalaz( http://code.google.com/p/scalaz/ )
これらのSAIのターゲットユースケースは何ですか(軽量対「重い」エンタープライズフレームワーク)?
Scala 2.1 の時点で、scalaアクターは非推奨になり、Akkaアクターは標準配布の一部になりました
Scala2.7.7。 vs 2.8後 Scala 2.8.0 RC3ディストリビューション :
新しいReactorは、オプションの暗黙的な送信者IDを備えた、より軽量で純粋なイベントベースのアクターを提供します。デーモンスタイルのセマンティクスを持つアクターのサポートが追加されました。アクターは、効率的なJSR166yフォーク/結合プールを使用するように構成できるため、1.6JVMのパフォーマンスが大幅に向上します。スケジューラーはプラグイン可能になり、カスタマイズが簡単になりました。
Hallerの設計ドキュメントもあります: Scalaアクター:スレッドベースとイベントベースのプログラミングの統合
私の知る限り、リモートアクターをサポートしているのはScalaとAkkaだけです。
Akkaは、akkaの商用サポートとプラグインを提供するスケーラブルソリューションによってバックアップされています。 Akkaは、既存のフレームワーク(camel、AMQP、JTA、Comet、Spring、Redis)との統合、さらにSTMと永続性を対象としたヘビー級のソリューションのようです。
Scalaと比較したAkkaは、ネストされた受信をサポートしていませんが、アクターのメッセージループのホットスワップをサポートしており、スレッドベースとイベントベースの両方のアクター、いわゆる「イベントベースのシングルスレッド」アクターを持っています。
Akkaが徹底的な試合を強制していることに気づきました。したがって、技術的に受信が部分関数を期待している場合でも、関数は部分関数であってはなりません。これは、すべてのメッセージをすぐに処理する必要があることを意味します。