我有一个场景,我每隔10秒左右检查一次数据库中的特定值。并且,如果值是YES,那么我将从Java应用程序执行一堆shell脚本。
现在,数据库中的值只在一段时间内更新为YES,这取决于用户在网页上提交作业。因此,运行while循环来检查数据库中的这个值似乎是一个非常糟糕的设计,我想使用侦听器实现一个更干净的方法(观察者设计模式)。
这样的实现看起来像什么?有什么我可以效仿的例子吗?
是的,有更好的工作。mysql中有一个叫做binlog reader的东西。这就是mysql集群数据库的主从同步。
所以你可以在https://github.com/shyiko/mysql-binlog-connector-java上写你自己的逻辑获取表
上的所有更改事件或使用https://github.com/zendesk/maxwell从特定的表中读取事件,当值发生任何变化时,检查它是否符合您的条件,并在此基础上执行脚本或Java应用程序,而不是将其作为cron运行。
一般的想法是使用DB触发器,从Java端注册DB侦听器,并在某些事件发生时从DB端收到通知。
请审阅提出的解决方案如何在Java中实现db监听器