1

次の問題でAkkaを使用したデザインパターンを探しています。ログに記録されたイベントがたくさんある大きなファイルがあるとしましょう。ファイルを処理するアクター(マスター)を起動し、イベントごとに、処理(解析、変換など)のためにアクターのプールにメッセージを送信し、最終結果をシリアル化するために結果をマスターに送り返します各イベントの。イベントの処理は、互いに独立しています。

だから私の最初の考えは、Future.traverse電話を使ってリスト全体を待つことでした。しかし、イベントの処理はきめ細かい作業であり、Futuresの大きなリストを作成すると、メモリが大量に消費され、パフォーマンスが低下する可能性があるため、パフォーマンスが心配です。

?演算子(ファイアアンドフォーゲット)を使用できると同時に、すべてのイベントが処理された時刻を確認できるパターンはありますか?

4

2 に答える 2

3

プロセッサアクターにマスターに作業のバッチを要求させ、完了したら各バッチを確認してもらいます。

于 2012-07-26T10:22:48.913 に答える
1

アクターを扱うとき、私はそれらが実装される方法について推論するのが好きです:

  • アクターはメールボックスからのメッセージを処理します
  • メールボックスはFIFOキューです
  • アクターは、次のメッセージを処理する前にメッセージの処理を完了していることが保証されます。

私の頭に浮かぶ解決策は2つありますが、それだけではありません。

  • 送信者側で、ルーティングするメッセージの数を記録し、処理が完了したらプロセッサアクターに確認を送信させます。多分FMSはその中であなたを助けるでしょう。

  • メッセージのルーティングと「ack」メカニズムも階層的に編成します。これは私には最もエレガントなパターンに見えます。

于 2012-07-26T08:31:10.747 に答える