我在Spring中设置Quartz驱动的作业。该作业需要一个参数,该参数是数据库记录的id,可用于定位需要处理的数据。
序列是:
因为在作业开始之前记录ID是未知的,所以在创建作业时我无法进行设置。如果情况变坏,我还需要考虑重启。从阅读Quartz doco看来,如果我将记录Id存储在触发器的JobDataMap中,那么当服务器重新启动时,作业将自动重启,其原始启动时的记录ID相同。
这是事情变得棘手的地方,我试图弄清楚何时何地获取记录ID,以便将其存储在触发器的JobDataMap中。我想我需要实现一个TriggerListener,并在调用triggerFired()
回调时使用它来设置JobDataMap中的记录Id。这将涉及调用数据库以获取记录Id。
我不确定这种方法是否正确,或者我是否咆哮错误的树。具有一些石英经验的人可以告诉我这是否正确,或者是否有更好的方法来配置作业参数,以便它们可以动态设置并重新启动将保留它们?
由于 德里克