Activer lot sur une seule instance de serveur

voix
0

J'ai une loadbalancer nginx devant deux instances de tomcat chacun contient une application de démarrage à ressort. Chaque application de démarrage ressort exécute un lot qui écrit des données dans une base de données. Le lot exécute tous les jours à 1h du matin. Le problème est que les deux instances exécutent le lot simultaniously que je ne veux pas.

Y at-il un moyen de garder les batchs déployés dans deux cas et dire tomcat ou nginx pour démarrer le lot dans le serveur maître (et le serveur esclave ne fonctionne pas le lot).

Si l'un des serveurs arrête, le second serveur peut démarrer le lot en son nom.

Y at-il un outil ou nginx tomcat (ou une autre technologie) pour le faire?

Merci d'avance.

Créé 14/02/2020 à 00:02
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
0

Spring Batch utilise une base de données pour ses travaux (JobsRepository). Par défaut, un mémoire dans la source de données est utilisée pour assurer le suivi des travaux en cours d'exécution et leur statut. Dans votre configuration, les 2 cas sont (le plus probable) en utilisant leur propre base de données dans la mémoire. Plusieurs instances de lot Spring peuvent se coordonner entre eux en tant que groupe et on peut exécuter des tâches, tandis que l'autre sauvegarde actasa, si la base de données jobsRepository est partagée. Pour cela, vous devez configurer les 2 cas d'utiliser une source de données commune.

Voici quelques docs: https://docs.spring.io/spring-batch/docs/current/reference/html/index-single.html#jobrepository

https://docs.spring.io/spring-batch/docs/current/reference/html/job.html#configuringJobRepository

Créé 14/02/2020 à 03:00
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more