0

我想编写一个 SQL 脚本来获得失败的工作,有一些像 QRTZ_TRIGGERS 这样的表,我该如何实现 sql?也许比较 next_fire_time + misfireThreshold< now()?

4

2 回答 2

1

它是这样的:

SELECT TRIGGER_NAME
FROM QRTZ_TRIGGERS
WHERE NOT (MISFIRE_INSTR = -1)
  AND NEXT_FIRE_TIME < 1345050693000 
  AND TRIGGER_STATE = 'WAITING'

基本上,您要求所有等待触发器的NEXT_FIRE_TIME参数远在过去。多远?Quartz 假设所有org.quartz.jobStore.misfireThreshold迟到的触发器都会失火。默认情况下,如果触发器被安排在一分钟前运行,则 Quartz 将其视为未触发。所以采取:

new Date() - 60 * 1000 * 1000

有关StdJDBCConstants更多详细信息,请参阅。

于 2012-08-15T17:18:10.187 回答
0

“TRIGGER_STATE”列显示每个作业的状态,包括 MISFIRED 的:

SELECT *
FROM QRTZ_TRIGGERS
WHERE TRIGGER_STATE = 'MISFIRED'

我还想建议运行此查询

SELECT TRIGGER_STATE, COUNT(*)
FROM QRTZ_TRIGGERS
GROUP BY TRIGGER_STATE
ORDER BY TRIGGER_STATE

在几分钟的时间间隔内,查看触发机制的更加动态的行为。

于 2014-07-05T12:28:17.877 回答