替代在while循环中检查数据库值

时间:2016-09-23 20:50:42

标签: java scheduling

我有一个场景,我每10秒左右检查一次数据库中的特定值。并且,如果值为YES,那么我从Java应用程序执行一堆shell脚本。

现在,数据库中的值仅在一段时间内更新为YES,具体取决于用户在网页上提交作业。因此,运行while循环以在数据库中检查此值似乎是一个非常糟糕的设计,我想使用侦听器(Observer设计模式)实现更清晰的方法。

这样的实现怎么样?我可以遵循这样做的任何例子吗?

2 个答案:

答案 0 :(得分:1)

是的,有更好的工作。所以在mysql中有一个叫binlog阅读器的东西。这是如何在mysql集群数据库中完成主同步和从属同步。

所以你要么在https://github.com/shyiko/mysql-binlog-connector-java上编写自己的逻辑,它会获得表格上的所有chane事件

或使用https://github.com/zendesk/maxwell来读取特定表中的事件,当值发生任何变化时,检查它是否与您的条件匹配,并根据它执行脚本或java应用程序,而不是将其作为cron运行。< / p>

答案 1 :(得分:0)

一般的想法是使用DB triggers,从Java端注册数据库侦听器,并在发生某些事件时从数据库端通知。

请审查提出的解决方案 How to implement a db listener in Java