2

着信HTTPリクエストをスレッドにバインドされたイベント処理アクターに送信されるイベント(ケースクラス)に変換する薄いWebレイヤー(Scalatra )があります。一部のイベントには、さまざまな理由で変更する必要がある集約ルートのIDが含まれています。アプリケーションデータの総量が大きすぎてメモリに収まらないため、操作する前に、データソースからIDで集計を取得する必要があります。もちろん、イベント処理アクターをブロックしたくないので、新しい(イベントベースの?)データをロードし、変更してデータソースに保存するアクター。理想的には、データソースのACID機能に依存するのではなく、アプリケーションで同時実行性を処理したいと思います。基本的に、各アグリゲートへのシリアル化/トランザクションアクセスが必要です。

これはアクターを使用して達成できますか?最善のアプローチは何でしょうか?ConcurrentHashMap集約ルートIDにキー設定されたアクターを含むイベント処理アクターの内部を維持しますか?

それとも、STM:s(ScalaSTM / Akka)などを使用する必要がありますか?

4

1 に答える 1

3

「集約ルート」をアクターとして表すことができます。集約ルートを変更したい場合は、リクエスト処理アクターからメッセージを送信してそうすることができます。メッセージを正しいアクターに転送し、データを表すアクターをオンデマンドでインスタンス化し、必要に応じてそれらを停止することによって( id によって) 集約ルート アクターのキャッシュを管理する仲介ブローカー アクターを使用することもできます。データを表すアクター間でミューテーションを調整する必要がある場合は、STM が必要になります。

于 2011-12-05T21:39:45.150 に答える