我现在正在与Qrtz合作,并发现许多次子作业未在母版作业执行后自动启动。我调查了QRTZ库中由log4j生成的日志。我们发现表“qrtz_simple_triggers”中有一个触发器丢失问题。自从Mother作业将触发器插入到表“qrtz_triggers”之后发生了问题,然后立即将数据插入到“qrtz_simple_triggers”中。但对我而言,在完全插入表中的simeple触发器期间,有一段时间延迟了约1秒,同时,从“线程池”到“更新”表中的“qrtz_triggers”中的触发器状态从“WAITING”在母工作没有完成将触发器插入“qrtz_simple_triggers”的时候“获取”。所以,主线程在表中找不到简单的触发器,然后停止工作。 (对于那个孩子工作)石英:触发器表插入方法
我的观点是如何防止这种情况?我认为这两个插入语句不在同一个trasaction中。我现在正在对此进行调查,并假设将这些语句合并到同一事务中的解决方案。你会带给我更多的想法吗?
由于提前, 停止:)
如何交易在您的应用程序进行管理,您使用春天来管理交易? – blob
是Blob,但我不确定QRTZ如何管理其数据库连接。是否为每个为工作作业打开的连接设置了自动提交。我也在为此进行调查。 –
仅供参考,我正在使用QRTZ版本。 1.8.6 :) –