Je suis en train de développer une application basée sur Spring-Boot.
Je sais que des annotations telles que @Scheduled peuvent planifier des tâches. Étant donné que les utilisateurs de mon application veulent envoyer des mails à une heure différente et n'envoyer qu'une seule fois.
J'ai déjà lu le post Tâche de planification de Spring - ne s'exécute qu'une seule fois ,
De cette façon, une fois que l'utilisateur a planifié l'envoi d'un courrier électronique, je dois "créer" un nouvel exécuteur local pour sa tâche.
Alors, y a-t-il de meilleurs moyens?
vous devriez utiliser quartz-scheduler
et send mails at different time and send only once.
- mettez ceci en tant que logique applicative dans votre code . Veuillez vous reporter à l'intégration print -quartz de démarrage initial https://github.com/davidkiss/spring-boot-quartz-demo
Le moyen le plus simple de planifier des tâches dans Spring consiste à créer une méthode annotée par @Scheduled
dans le bean géré Spring. Il a également requis @EnableScheduling
dans toutes les classes @Configuration
.
Vous pouvez utiliser crontab dans @Scheduled
private AtomicInteger counter = new AtomicInteger(0);
@Scheduled(cron = "*/2 * * * * *")
public void cronJob() {
int jobId = counter.incrementAndGet();
System.out.println("Job " + new Date() + ", jobId: " + jobId);
}
Vous pouvez utiliser Quartz Scheduler .
Quartz est une bibliothèque de planification de travaux open source riche en fonctionnalités qui peut être intégrée dans pratiquement toutes les applications Java, de la plus petite application autonome au plus grand système de commerce électronique. Quartz peut être utilisé pour créer des planifications simples ou complexes permettant d'exécuter des dizaines, des centaines, voire des dizaines de milliers d'emplois. tâches dont les tâches sont définies comme des composants Java standard pouvant exécuter pratiquement tout ce que vous pouvez les programmer. Quartz Scheduler comprend de nombreuses fonctionnalités d'entreprise, telles que la prise en charge des transactions JTA et la mise en cluster.
Vous pouvez trouver des blogs illustrant comment utiliser le quartz dans les bottes de printemps, y compris la définition des haricots de JobDetail, de Trigger, d’usines, etc., ce qui est un peu fastidieux et fastidieux.
Vous pouvez essayer/ https://github.com/mejariamol/quartz-easy . Cette bibliothèque simplifie l'intégration du planificateur à quartz dans la structure de démarrage de printemps. Je suis arrivé à cela en installant un programmateur quartz dans l’un des projets en cours.
import com.indusnode.quartz.annotation.Scheduled;
...
@Scheduled(interval="5", intervalType=Scheduled.IntervalType.SEC)
class TestJob implements Job {
//...
}
qe.base-package
comme nom de package de base du projet, qui contiendra toutes les implémentations de travail. Ajoutez également com.indusnode
en tant que valeur à basePackage dans l'analyse des composants.Pour utiliser cette bibliothèque, incluez l'artefact quartz-easy
dans la section des dépendances de votre pom.xml
.
<dependency>
<groupId>com.indusnode</groupId>
<artifactId>quartz-easy</artifactId>
<version>1.0.0</version>
</dependency>
Pour plus de détails, veuillez consulter https://search.maven.org/artifact/com.indusnode/quartz-easy/1.0.0/jar