メッセージを処理して特定のエンティティを作成するアクターが Akka にいます。これらのエンティティの一部のフィールドは、作成時のデータベース内の他のエンティティの状態に基づいて計算されます。
アクターの処理が、データベースがエンティティを永続化できる速度よりも速くなる競合状態を作成することは避けたいと思います。これにより、次のようにデータの一貫性が失われる可能性があります。
- アクターは を作成し、
Foo
それを他のアクターに送信して、さらに処理して保存します - アクターは別の を作成するように求められます
Foo
。最初のものはまだ保存されていないため、DB の古い内容に基づいて新しいものを作成し、間違ったFoo
.
Foo
s の作成は手動でトリガーされるため、この可能性はほとんどありません。ただし、ダブルクリックが高負荷下で問題を引き起こす可能性があることは依然として考えられます。Foo
そして、明日が自動的に作成されるかどうかは誰にもわかりません。
したがって、私が必要としているのは、アクターに待機するように指示し、Foo
s が保存されたことを確認してから操作を再開する方法です。
アクターをアイドル状態にして、しばらくしてから操作を再開するように指示する方法はありますか?
基本的には、メールボックスをメッセージ キューとして使用し、キューの処理速度を制御したいと考えています。