2012-02-18 50 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