用开源工具包Quartz做定时框架,现在遇到一个问题。
当多个weblogic节点发布时,定时框架采用的是SELECT * FROM SP_QRTZ_LOCKS WHERE LOCK_NAME = :1 FOR UPDATE获取锁的形式,当能锁住记录则执行定时任务。多个节点执行会产生大量的行锁。
为了解决这个问题SELECT * FROM SP_QRTZ_LOCKS WHERE LOCK_NAME = :1 FOR UPDATE NOWAIT ,可以解决锁的问题,但会导致任务出错退出。