2016-09-23 3 views
0

J'ai un scénario dans lequel je vérifie une valeur spécifique dans la base de données toutes les 10 secondes environ. Et, si la valeur est OUI, j'exécute un tas de scripts shell à partir d'une application Java.Alternative à la vérification de la valeur de la base de données dans une boucle while

Maintenant, la valeur dans la base de données n'est mise à jour que de temps à autre, en fonction de l'utilisateur qui soumet un travail sur une page Web. Par conséquent, exécuter une boucle while pour vérifier cette valeur dans la base de données semble être une très mauvaise conception et je voudrais mettre en œuvre une approche beaucoup plus propre en utilisant des écouteurs (modèle de conception Observer).

À quoi ressemblerait une telle implémentation? Tous les exemples que je peux suivre pour faire cela?

Répondre

1

Oui, il y a beaucoup mieux. Il y a donc quelque chose appelé lecteur binlog dans mysql. Thats comment la synchronisation de maître et d'esclave est faite dans la base de données de groupe de mysql.

Donc, soit vous écrivez votre propre logique sur https://github.com/shyiko/mysql-binlog-connector-java qui obtient tout l'événement chane sur la table

ou utiliser https://github.com/zendesk/maxwell pour lire les événements de table particulière et whenver toute variation de la valeur est il vérifier si elle correspond à votre état et excute le script ou l'application Java sur la base de cela au lieu de l'exécuter en tant que cron.

0

L'idée générale est d'utiliser DB triggers, enregistrer le programme d'écoute de DB à partir du côté Java et être averti du côté DB lorsqu'un événement s'est produit.

Pls commenter les solutions proposées How to implement a db listener in Java