1

次の状況で助けが必要です。属性Jobを持つエンティティの階層を想像してください。progress一部のジョブは、ジョブ ツリーを作成する複数のサブジョブで構成されます。これらの複合ジョブの進行状況は、サブジョブから計算されます。下位ジョブの進行状況は定期的に更新され、ツリー全体の進行状況がボトムアップで再計算されます。ジョブの進行状況は、受信した JMS メッセージを介して更新されます。この場合、ジョブは JPA を介してデータベースからフェッチされ、進行状況が変更され、再帰的な再計算が開始されます。

これがクラスターで実行されている場合、ロックをどのように処理すればよいですか? 2 つのサブジョブが 0% から 100% に更新され、親ジョブが 100% ではなく 50% になる状況は避けたいと思います。これは、両方の更新が 0%、100%、またはその逆を参照するためです。

私が最初に考えたのは、ジョブ オブジェクトで同期を使用することでした。ただし、複数の実行時オブジェクトがデータベース内の同じレコードを表す可能性があるため、これは問題です。

この状況を処理するための効率的で適切な方法を教えてください。

4

0 に答える 0