3

適切なステートレス サービス、つまりシングルトン スコープの Bean を作成したいのですが、状態が忍び寄ることがあります。私が取り組んでいるアプリケーションの現在の候補は次のとおりです。

  • データのキャッシュ
  • Future後で必要に応じてキャンセルできるように、スケジュールされたタスクの を保持する

の単純化されたサンプル サービスは次Futureのようになります。

class SchedulingService {
  @Autowired
  TaskScheduler scheduler;

  Map<String, ScheduledFuture> scheduledEvents = new HashMap<>();

  public void scheduleTask(String id, MyTask task) {
    if (scheduledEvents.containsKey(id)) {
      scheduledEvents.remove(id).cancel(false);
    }
    persistTask(task)
    scheduledEvents.put(id, scheduler.schedule(task, task.createTrigger()));
  }

  void persistTask(MyTask task) { /* persist logic here */ }
}

このような要件は常に発生すると確信しています。メモリに保持する必要があるデータは、データベース内のデータから派生した情報であるため、永続化する必要がないため、この方法で状態を保持することは許容されますか? そうでない場合、これを行うより良い方法はありますか?

4

0 に答える 0