【问题标题】:JobDetail JobDataMap vs Trigger JobDataMap for one job with multiple inputsJobDetail JobDataMap vs Trigger JobDataMap 用于具有多个输入的一项作业
【发布时间】:2017-12-18 23:56:35
【问题描述】:

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

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

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

是否有理由偏爱一种选择?

谢谢。

【问题讨论】:

    标签: quartz-scheduler quartz


    【解决方案1】:

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

    做出此决定的主要原因是它似乎更易于理解和维护。

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

    只要我的两分钱。

    【讨论】:

    • 谢谢。这也是我的偏好。我想知道在什么情况下更愿意将作业输入添加到触发器。但这很有帮助,谢谢。
    猜你喜欢
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-28
    相关资源
    最近更新 更多