2012-01-25 3 views
0

Je crée un mécanisme dans mon serveur Web dans lequel une tâche planifiée s'exécute toutes les 15 minutes et avertit les utilisateurs si une activité s'est produite pendant cette période. Il fonctionnerait comme suit:Spring @Scheduled après un redémarrage du serveur

  1. annoter un avec @Scheduled et un calendrier pour toutes les 15 minutes
  2. Lorsque la tâche est exécutée, gratter la base de données pour toute modification dans les 15 minutes de l'heure actuelle

quelques problèmes que je peux voir:

  • Si je dois redémarrer le serveur et il est vers le bas pendant plus de 15 minutes, je aurais besoin de regarder en arrière pendant plus de 15 minutes pour qu'aucune activité n'est pas respecté.
  • Je lance un certain nombre de serveurs Tomcat et un seul d'entre eux doit exécuter la tâche. Sinon, des e-mails en double seront envoyés aux utilisateurs.

Est-ce que quelqu'un a traité de cela avant? Je pense que cela devrait vraiment être une tâche externe aux serveurs web ... cela permettrait de résoudre le problème des emails en double envoyés, mais cela ne résoudrait pas le problème de rebond du serveur.

Toutes les idées sur la façon de résoudre seraient grandement appréciées!

Répondre

1

je l'aurais fait les étapes suivantes pour effectuer la programmation:

  1. Au démarrage d'application requête pour les tâches de base de données (uniquement celles qui n'ont pas un drapeau sale défini sur false) et planifier.
  2. Sur chaque exécution d'une tâche planifiée mettre un drapeau sale pour suggérer la tâche exécutée

Parce que je vais la récupération de ces tâches seulement qui sont marquées comme sale, la question de plusieurs e-mails ne devrait pas se produire même sur le serveur Commencez.

Questions connexes