2017-12-29 5 views
0

私には概念的な疑いがあります。特定のエンティティのイベントが読み取り側で順番に処理されることはわかっていますが、次のイベントの処理は、前のイベントが正常に処理され、データベースが更新されるまで待たないと思います。Lagomの読み取り側プロセッサでのイベントの処理

私は正しいですか?私の場合は、以前のイベントが正常に処理され、読み取り側のデータベースが更新された場合にのみ、読み取り側でイベントが処理されるように強制する方法がありますか?

答えて

0

通常、Lagom は、イベントタグごとに一度に1つのイベントを処理します。前のイベントが正常にコミットされる前に、次のイベントの処理が開始される状況はありません。

唯一の例外は、イベントハンドラ内で非同期アクションを明示的に実行する場合です。そうした場合は、イベントの処理がそのアクションが完了するのを待つように、これを特別に処理する必要があります。詳細は、使用している読み取り側のタイプによって異なります。

カサンドラ読み取り側APIは、イベントハンドラがCompletionStage<List<BoundStatement>>を返すと予想しています。この完了段階は、イベント・プロセッサーによって呼び出されたすべての非同期アクションが完了した後にのみ完了するようにする必要があります。 CompletionStageおよびCompletableFuture APIは、複数の非同期アクションを作成およびシーケンスするさまざまな方法を提供します。

JDBCおよびJPAの読取り側APIでは、イベントハンドラが同期およびブロックされ、専用の実行コンテキストでコードを実行してこれを処理することが期待されます。 JDBC/JPAイベントハンドラから非同期アクションを呼び出す場合は、完了するまで明示的にブロックする必要があります。

関連する問題