J'utilise la lecture 2.3.8 (activateur) et mongodb en tant que dB p>
J'ai des produits dans la collection de produits et chaque produit a une date d'expiration et une fois son expiration
Je dois supprimer les documents de la collection de produits. p>
Je planifie d'écrire un travail cron pour supprimer les documents de la collection de produits qui s'exécuteront tous les jours en même temps. P>
Je pense que je peux utiliser des annotations comme @on, @Every en Java (je écris du code dans la lecture Java, pas de jouer à Scala). mais quand j'ai googlé, j'ai eu des plugins ou des outils ou des solutions p>
a) https://github.com/ssachtleben/play-plugins/tree/master/cron p>
B) Schedule de travail de quartz en tant que dépendance à lire 2.3 (activateur) p>
c) emplois AKKA async (je ne comprends pas comment utiliser cela, comment intigrate avec jouer et même je suis nouveau à Akka) P>
Je suis dans l'état de confusion, pourriez-vous me suggérer de suivre p>
Lequel je peux utiliser pour mes besoins? p> li>
suis-je dans un chemin correct pour faire mon travail? P> Li>
Y a-t-il une chose qui fera mon travail au niveau de la base de données? Merci d'avance. P> li> ol>
3 Réponses :
En jeu Rôle du cron est effectué via Scheduler Akka - Bien que l'échantillon soit très facile - c'est un outil assez puissant. P>
Plus de détails peuvent être trouvés sur la page d'Akka et même ici sur la scaleverflow Ie Comment planifier la tâche quotidienne + Onstart () dans la lecture 2.0.4? - Il s'agit d'un exemple de 2.0.4 de toute façon vous pourrez le convertir en 2.3.x facile < / p>
Akka.system().scheduler().scheduleOnce( Duration.create(0, TimeUnit.MILLISECONDS), new Runnable() { public void run() { Logger.info("ON START --- " + System.currentTimeMillis()); } }, Akka.system().dispatcher() ); Akka.system().scheduler().schedule( Duration.create(nextExecutionInSeconds(8, 0), TimeUnit.SECONDS), Duration.create(24, TimeUnit.HOURS), new Runnable() { @Override public void run() { Logger.info("EVERY DAY AT 8:00 --- " + System.currentTimeMillis()); } }, Akka.system().dispatcher() ); Akka.system().scheduler().schedule( Duration.create(0, TimeUnit.MILLISECONDS), //Initial delay 0 milliseconds Duration.create(60, TimeUnit.SECONDS), //Frequency 30 minutes new Runnable() { @Override public void run() { Logger.info("creating the runnable"); Logger.info("EVERY 60 MInutes --- " + System.currentTimeMillis()); executeAllMongoAggregations(); } }, Akka.system().dispatcher() ); } Akka.system().scheduler().scheduleOnce( Duration.create(0, TimeUnit.MILLISECONDS), new Runnable() { public void run() { Logger.info("ON START --- " + System.currentTimeMillis()); } }, Akka.system().dispatcher() ); Akka.system().scheduler().schedule( Duration.create(nextExecutionInSeconds(8, 0), TimeUnit.SECONDS), Duration.create(24, TimeUnit.HOURS), new Runnable() { @Override public void run() { Logger.info("EVERY DAY AT 8:00 --- " + System.currentTimeMillis()); } }, Akka.system().dispatcher() ); Akka.system().scheduler().schedule( Duration.create(0, TimeUnit.MILLISECONDS), //Initial delay 0 milliseconds Duration.create(60, TimeUnit.SECONDS), //Frequency 30 minutes new Runnable() { @Override public void run() { Logger.info("creating the runnable"); Logger.info("EVERY 60 MInutes --- " + System.currentTimeMillis()); } }, Akka.system().dispatcher() ); }
Pouvons-nous utiliser le planificateur de quartz? @Poornerd
@Narendra Désolé - seulement déjà utilisé le planificateur d'Akka
Ceci peut être fait en utilisant la classe globale et sur la méthode OnStart. https://www.playframework.com/documentation/2.5.x/javaglobal
Une vue abstraite du codage est donnée ci-dessous. J'espère que cette aide p>