JobDetail JobDataMap vs Trigger JobDataMap用于具有多个输入的一个作业

时间:2017-12-18 23:56:35

标签: quartz-scheduler quartz

我有一个工作类将使用不同的用户输入执行。我意识到我可以在JobDetail和Trigger上指定JobDataMap。所以,如果我理解的话,我有两个选择:

(1)JobDetail上的JobDataMap - 当用户指定新输入和计划时,使用这些输入创建一个新JobDetail并创建一个新触发器。然后将新创建的jobDetail和触发器添加到调度程序。

(2)触发器上的JobDataMap - 当用户指定新输入和计划时,使用这些输入创建新触发器,并将触发器添加到已添加的jobDetail的调度程序中。

是否有理由偏好另一种选择?

感谢。

1 个答案:

答案 0 :(得分:0)

根据我的个人经验,我不得不说我们使用第一种方法(在JobDetail上指定工作参数)。

这个决定的主要原因是,理解和维护似乎更简单,更清晰。

  • 当用户使用特定参数安排作业时,我们会相应地填充JobDetail JobDataMap
  • 此预定作业的Trigger可能会被多次触发,我们必须确保所有作业执行的参数不会发生变化并保持不变。
  • 如果用户想要使用不同参数计划相同类型的作业,则会创建新的JobDetail并将其添加到计划程序中。
  • 这样,我们假设JobDetail是我们的主要工作定义"包含运行作业所需的所有信息(自定义参数,参数等),我们将离开Trigger个对象来处理执行时间。

只是我的两分钱。