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

问题描述 投票:0回答:1

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

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

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

是否有理由选择一种选择而不是另一种?

谢谢。

quartz-scheduler quartz
1个回答
0
投票

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

这个决定背后的主要原因是,理解和维护似乎更简单,更干净。

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

只是我的两分钱。

© www.soinside.com 2019 - 2024. All rights reserved.