2012-02-18 10 views
16

In Play 1.0, possiamo definire alcuni lavori che verranno eseguiti in background:Dov'è il supporto del lavoro in Play 2.0?

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

Ma io non riesco a trovarlo in Play 2.0. Mi manca qualcosa?

+0

@Peter Mortensen, grazie per aver corretto gli errori della mia domanda. – Freewind

+0

Hy @Freewind hai la soluzione? se sì, per favore dimmelo pure. –

+1

@MuneebNasir Vedere la risposta http://stackoverflow.com/a/32972812/342235 – Freewind

risposta

1

fissato il link nella risposta accettata originale che ha registrato da JonasAnso

Per ottenere la funzionalità di OnApplicationStart è possibile utilizzare globale onStart

Qui puoi programmare i tuoi attori usando Akka.

Speranza che aiuta.

+1

Sembra da Play 2.4, GlobalSettings è deprecato? Qual è la nuova soluzione? – ttt

6

È possibile utilizzare il servizio di pianificazione in akka.

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

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

In sostanza si crea un attore che esegue la logica se riceve un certo messaggio.

+2

Penso che non stia cercando. I lavori non devono essere attivati ​​dalle azioni, stanno semplicemente lavorando in background. – Freewind

+1

Ad esempio, come utilizzare lo scheduler di akka per implementare '@ OnApplicatonStart'? – Freewind

6

Per la parte di lavoro acutal questo sembra essere il modo in 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

Vedere https://www.playframework.com/documentation/2.3.x/ScalaAkka per ulteriori dettagli. – Josef