Play Framework - 每n小时调用一次模型方法

时间:2013-04-29 20:29:08

标签: java playframework-2.0

我的一个模型类中有一个方法可以删除日期字段已过期的模型对象。我想知道是否还有每24小时自动运行此方法的例子?对我的游戏应用程序来说,就像我的系统内cronjob一样。

我正在使用play 2.0.4 - 这是模型方法:

public static void removeHistoricDates() throws ParseException {

    List<Book> allBooks = new ArrayList<Book>();
    allBooks = find.all();

    //Empty-list that out-of-date Books will be added to
    List<Book> historicDates = new ArrayList<Book>();

    SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd");

    for(Book Book: allBooks) {

        Date BookDate = formatter.parse(Book.date);
        Date todayDate = new Date();

        if(todayDate.after(BookDate)) {
            historicDates.add(Book);
        } 
    }

    for(Book outofDate: historicDates) {
        find.ref(outofDate.id).delete();
    }
}

目前,每当我在控制器/应用程序中调用一个方法来证明它有效时,我只是调用此方法 - 而且确实如此。我希望做的是每24小时独立调用这个模型方法,而不依赖于用户调用的某种应用方法。

更新:所以目前我正在查看this因为Heroku是我正在使用的托管服务。

1 个答案:

答案 0 :(得分:3)

很容易就像馅饼! Play依靠Akka来安排任务。查看the corresponding page in the docsAkka docs on the Scheduler

你会想做这样的事情:

Akka.system().scheduler().schedule(
  Duration.create(24, TimeUnit.HOURS),
  new Runnable() {
    public void run() {
      // your code here.
    }
  }
);