3

我想创建适当的无状态服务,即具有单例范围的 bean,但有时会出现状态。我正在处理的应用程序中的当前候选人是

  • 缓存数据
  • 保留Future计划任务的 s 以便以后可以根据需要取消它们

s的简化示例服务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