2

我现在正在与 Qrtz 合作,发现很多次子作业在执行完母作业后并没有自动解雇。我在 QRTZ 库中调查了 log4j 生成的日志。我们发现表“qrtz_simple_triggers”中存在触发器丢失问题。出现问题是因为 Mother 作业将触发器插入到表“qrtz_triggers”中,然后它应该立即将数据插入到“qrtz_simple_triggers”中。但就我而言,在完全插入表中的单触发器期间延迟了大约 1 秒,同时,线程池中有一个操作从“WAITING”更新表“qrtz_triggers”中的触发器状态“获取” 就像母作业没有完成触发器插入“qrtz_simple_triggers”一样。所以,主线程在表中找不到简单的触发器,然后它就停止了工作。(对于那个儿童工作)

我的观点是如何防止这种情况发生?我认为这两个插入语句不在同一个事务中。我现在正在对此进行调查,并假设将这些语句合并到同一个事务中的解决方案。你能给我带来更多的想法吗?

在此先感谢,停止:)

4

1 回答 1

1

如果您使用 spring 来管理事务,请查看post

环境

org.quartz.jobStore.class = org.springframework.scheduling.quartz.LocalDataSourceJobStore
于 2012-05-19T07:25:32.397 回答