0
votes

Spring @enablesChatling et @schedule Annotation Ne fonctionnent pas

J'ai fait une classe avec une méthode à l'intérieur qui doit fonctionner toutes les 5 secondes. Ils ressemblent à ceci: xxx

Le problème est que cela s'appelle une seule fois au début et plus jamais.


3 commentaires

avec botte à ressort


Essayez d'ajouter @enablesCHEDULING sur le fichier Main Spring boot java et supprimez de myClass


Une chose à faire est que vous ne lisez jamais une exception d'aucune sorte d'évacuation de la méthode planifiée - cela arrêtera votre planificateur.


4 Réponses :


0
votes

Je viens de créer une application de démarrage de printemps à partir du printemps Initializr et cela fonctionne parfaitement. Vous pouvez vérifier le code suivant: xxx

dépendances: xxx

sortie: xxx

Mise à jour: Il fonctionne également avec configuration séparée: xxx


0 commentaires

0
votes

Les autres réponses à cette question indiquent que, en général, le @schedulled fonctionne. Mais il a quelques limitations - un tel intervalle de temps pourrait être donné que des millisecondes uniquement ou comme une expression cron. Et ce n'est pas toujours convivial. J'ai opté pour écrire mon propre planificateur personnalisé. Il nécessite un peu plus de travail que d'utiliser une annotation, mais fournit plus de flexibilité, telle que l'ajout de plusieurs instances de coureur, en choisissant un certain nombre de threads et fournir un intervalle de temps dans un format lisible par l'homme tel que "5m" pendant 5 minutes ou "3h" Pendant 3 heures, etc. Vous pouvez vérifier l'explication détaillée ici . Je l'ai trouvé plus pratique d'utiliser que le ressort fourni @schedulled fonction. La bibliothèque est disponible en tant que artefact maven (y compris le code source et Javadoc) et sur Github (aussi avec Code source et javadoc) également dans le code source, il existe un exemple de travail de tâches planifiées en cours d'exécution (voir package "com.mgnt.lifecycle.management.backgroundRunner.exemple").


0 commentaires

0
votes

J'ai découvert que dans le projet, il existe une autre tâche planifiée qui dure si longtemps qu'elle bloque tous les autres. Maintenant, j'essaie de savoir pourquoi il est si lent ...


0 commentaires

0
votes

Créez une classe pour des configurations et créez une autre classe pour le planificateur. N'oubliez pas de marquer la classe du planificateur comme composant de ressort à l'aide de @Component xxx


0 commentaires