我现在正在与Qrtz合作,并多次发现在母亲工作已经执行后,子工作没有自动解雇。我已经调查了由log4j在QRTZ库中生成的日志。我们发现表“qrtz_simple_triggers”中存在触发器丢失问题。自从Mother作业将触发器插入表“qrtz_triggers”后出现问题,然后它应立即将数据插入“qrtz_simple_triggers”。但对于我的情况,在完全插入表中的simeple触发器期间有一段时间延迟了大约1秒,同时,从“线程池”到“等待”表中的“qrtz_triggers”中的触发状态有一个操作。 “ACQUIRE”,因为母亲的工作没有完成触发器插入“qrtz_simple_triggers”。因此,主线程无法在表中找到简单的触发器,然后它停止工作。 (对于那个孩子的工作)
我的观点是如何防止这样的情况?我认为两个插入语句不在同一个trasaction中。我现在正在对此进行调查,并假设将这些语句合并到同一事务中的解决方案。你能给我带来更多想法吗?
提前致谢, 停止:))
答案 0 :(得分:1)
如果您使用spring管理交易,请检查post
设置
org.quartz.jobStore.class = org.springframework.scheduling.quartz.LocalDataSourceJobStore