在 while 循环中检查数据库值的替代方法
Alternative to checking database value in a while loop
我有一个场景,我每 10 秒左右检查一次数据库中的特定值。而且,如果值为 YES,那么我会从 Java 应用程序执行一堆 shell 脚本。
现在,数据库中的值只会偶尔更新为 YES,具体取决于用户在网页上提交作业。因此,运行 一个 while 循环来检查数据库中的这个值似乎是一个非常糟糕的设计,我想使用侦听器(观察者设计模式)实现更简洁的方法。
这样的实现会是什么样子?我可以遵循任何示例来执行此操作吗?
是的,有更好的工作。所以在mysql中有一个叫做binlogreader的东西。这就是在 mysql 集群数据库中完成主从同步的方式。
所以要么你在 https://github.com/shyiko/mysql-binlog-connector-java 上编写自己的逻辑,它会在 table
上获取所有变化事件
或使用 https://github.com/zendesk/maxwell 从特定的 table 读取事件,当值发生任何变化时检查它是否符合您的条件并根据以下条件执行脚本或 java 应用程序而不是 运行 它作为一个 cron。
总体思路是使用DB triggers,从Java端注册数据库监听器,当某些事件发生时从数据库端收到通知。
请查看建议的解决方案
How to implement a db listener in Java
我有一个场景,我每 10 秒左右检查一次数据库中的特定值。而且,如果值为 YES,那么我会从 Java 应用程序执行一堆 shell 脚本。
现在,数据库中的值只会偶尔更新为 YES,具体取决于用户在网页上提交作业。因此,运行 一个 while 循环来检查数据库中的这个值似乎是一个非常糟糕的设计,我想使用侦听器(观察者设计模式)实现更简洁的方法。
这样的实现会是什么样子?我可以遵循任何示例来执行此操作吗?
是的,有更好的工作。所以在mysql中有一个叫做binlogreader的东西。这就是在 mysql 集群数据库中完成主从同步的方式。
所以要么你在 https://github.com/shyiko/mysql-binlog-connector-java 上编写自己的逻辑,它会在 table
上获取所有变化事件或使用 https://github.com/zendesk/maxwell 从特定的 table 读取事件,当值发生任何变化时检查它是否符合您的条件并根据以下条件执行脚本或 java 应用程序而不是 运行 它作为一个 cron。
总体思路是使用DB triggers,从Java端注册数据库监听器,当某些事件发生时从数据库端收到通知。
请查看建议的解决方案 How to implement a db listener in Java