设置GAE数据存储区条目的最大年龄

时间:2014-08-20 13:37:39

标签: java google-app-engine

我正在使用Java Google App Engine编写程序。我希望在数据存储达到一定年龄后自动从数据存储中删除某些类型的实体,以防止使用不必要的内存。这是我创建实体的非常有趣的方式:

    DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
    Entity entity = new Entity("thingamabob","special_thingamabob");
    datastore.put(entity);

在这种情况下,我想让special_thingamabob在12小时之后自动离开数据存储区。我知道我可以为每个实体提供一个时间戳,然后使用cron每小时查询超时实体,但有更简单的方法吗?

1 个答案:

答案 0 :(得分:0)

看起来background-threads可能有效:

    Thread thread = ThreadManager.createBackgroundThread(new Runnable() {
 private volatile boolean isRunning = true;
  public void run() {
    try {
      while (isRunning) {
        Thread.sleep(12*60*60); // sleep for 12 hours
        datastore.delete(key); //then delete key
        isRunning=false;
      }
    } catch (InterruptedException ex) {
      throw new RuntimeException("Interrupted in loop:", ex);
    }
  }
});
thread.start();