2012-02-18 48 views
16

Play 1.0,我们可以定义将在后台执行一些工作:Play 2.0中的工作支持在哪里?

@OnApplicatonStart 
@Every("1h") 
public class DataJob extends Job { 
    public void doJob() { 
     // ... 
    } 
} 

但在播放2.0我找不到它。我想念什么?

+0

@Peter Mortensen,感谢您修复我的问题。 – Freewind 2012-11-04 01:16:12

+0

Hy @Freewind你有解决方案吗?如果是的话,请告诉我,以及。 – 2015-10-06 07:58:22

+1

@MuneebNasir查看答案http://stackoverflow.com/a/32972812/342235 – Freewind 2015-10-06 14:41:20

回答

1

固定在其发布的JonasAnso

为了获得OnApplicationStart的功能,你可以使用全球独创接受的答案的链接在onStart

在这里,您可以使用Akka来安排您的演员。

希望它能帮助。

+1

从Play 2.4看来,GlobalSettings已被弃用?什么是新解决方案? – ttt 2016-01-28 03:23:41

6

您可以在akka中使用调度程序服务。

http://doc.akka.io/docs/akka/2.0/java/scheduler.html

http://doc.akka.io/docs/akka/2.0/scala/scheduler.html

基本上你创建,如果它接收到某个消息执行你的逻辑演员。

+2

我认为这不是我要找的。工作不需要由行动触发,他们只是在后台工作。 – Freewind 2012-02-22 13:08:17

+1

例如,如何使用akka的调度程序来实现'@ OnApplicatonStart'? – Freewind 2012-02-22 13:08:50

6

对于acutal工作的一部分,这似乎是在Java中的方式,

Akka.system().scheduler().schedule(
     Duration.create(0, MILLISECONDS), // initial delay 
     Duration.create(5, MINUTES),  // run job every 5 minutes 

     new Runnable() 
     { 
      public void run() 
      { 
       .... 
      } 
     } 
    ); 
+2

有关更多详细信息,请参见https://www.playframework.com/documentation/2.3.x/ScalaAkka。 – Josef 2014-10-12 17:46:38