Java または .NET のタスク (ドメイン モデルでは「操作」と呼んでいます) を処理するための優れたライブラリを探しています。各操作を db で実行するために保存します。次に、未処理のタスクを db からフェッチし、それらを処理し、db レコードを適切なステータス (「処理済み OK」/「処理エラー」) で更新するためのメカニズムが必要です。
秘訣は、操作が互いに依存できることです。たとえば、「支払い操作」が処理されている場合、システムは以前に「操作支払いデータの確認」を実行する必要があることを検出する可能性があります。そのため、データベースに新しい操作行を作成し、「操作支払い」の実行を一時停止し、「操作支払いデータの確認」を処理する必要があります。 ' 次の順番で完了し、'Operation Payment' の処理に戻ります。
現時点でこれをどのように管理しているかをお見せします。
データベーステーブルの「操作」があります。Cron のようなメカニズムが毎分実行され、最初の 100 個の未処理の操作を db から取得して処理します。(処理中に) システムが、現在の操作 (A) を実行するために他の操作 (B) が必要であることを検出した場合、新しい操作 (B) レコードが作成され、現在の操作 (A) の実行が停止されます。次の分、cron は操作 A と B をフェッチします。操作 A は処理されないためフェッチされますが、システムは依存する操作 B が既に作成されていることを確認するため、再度作成しません。オペレーション B が処理され、ステータス「処理済み OK」がデータベースの適切な行に保存されます。次の分、cron は操作 A を db からフェッチし、依存タスクが完了するため、最終的にそれを実行できます。
私たちはそれをよりシンプルに、より良く、よりエレガントにする方法を探しています。