我的应用程序(JEE)中有一个进程(cron作业)。我有两个实例在两个不同的机器上运行。
我希望此Cron作业仅执行一次。我知道有很多方法可以做到这一点。但是我想使用数据库表Lock来做到这一点。
因此,此过程中要做的第一件事是在数据库中的某些表上获取LOCK。如果一个进程获得了锁,则另一个进程应立即中止。
我正在使用Postgresql(10.4)。这就是我代码中的内容
Statement statement = connection.createStatement();
statement.execute("LOCK TABLE crontable NOWAIT");
有了这个,我希望当一个进程获得锁时,其他进程将中止(根据文档https://www.postgresql.org/docs/10/sql-lock.html)
但是当前正在发生的是,其他进程一直等到第一个进程释放锁。
我在这里想念东西吗?