6
votes

Comment écrire un emploi cron dans le cadre de jeu 2.3

J'utilise la lecture 2.3.8 (activateur) et mongodb en tant que dB

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.

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.

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

a) https://github.com/ssachtleben/play-plugins/tree/master/cron

B) Schedule de travail de quartz en tant que dépendance à lire 2.3 (activateur)

c) emplois AKKA async (je ne comprends pas comment utiliser cela, comment intigrate avec jouer et même je suis nouveau à Akka)

Je suis dans l'état de confusion, pourriez-vous me suggérer de suivre

  1. Lequel je peux utiliser pour mes besoins?

  2. suis-je dans un chemin correct pour faire mon travail?

  3. Y a-t-il une chose qui fera mon travail au niveau de la base de données? Merci d'avance.


0 commentaires

3 Réponses :


1
votes

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.

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>


0 commentaires

2
votes
      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()
        );

    }

2 commentaires

Pouvons-nous utiliser le planificateur de quartz? @Poornerd


@Narendra Désolé - seulement déjà utilisé le planificateur d'Akka



7
votes

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 xxx


0 commentaires