我正在尝试使用Java创建一个Quartz调度程序,它可以调用API并传入数据。
我是Quartz的新手,但现在我理解了Job的概念以及如何创建它。我理解触发器概念以及如何触发它 我理解调度程序的工作原理。
我遇到的困难是如何传递需要传递给API的信息。我有一个API被调用的例子,数据被输入到DB中,但是信息已被硬编码到类中传递给JobDetails。
IE中。用户将消息传递给需要在12小时内而不是之前发送给用户的系统,因此我计划的是创建一个Job和一个触发器,将执行时间设置为12小时。如何将消息传递给调度程序?该消息应存储在何处?我正在尝试做什么?我误解了Quartz能做什么吗?
感谢您的时间。非常感谢任何帮助。
答案 0 :(得分:0)
看看JobDataMap。如果要为每个用户操作创建新作业,则可以将消息存储在执行期间可用的消息中。
JobDataMap保存Job实例的状态信息。
将Job添加到调度程序时,JobDataMap实例将存储一次。在每次执行使用@PersistJobDataAfterExecution注释的作业后,它们也会被重新保留。
JobDataMap实例也可以与Trigger一起存储。如果您有一个存储在调度程序中的作业以供多个触发器定期/重复使用,但是每次独立触发,您希望为作业提供不同的数据输入。
在执行时传递给Job的JobExecutionContext还包含一个方便的JobDataMap,它是在Job的JobDataMap(如果有的话)上合并触发器的JobDataMap(如果有的话)内容的结果。
如果您只有一个作业,但每个用户操作都要创建一个新触发器,您可以按照here给出的解决方案。
对于每个用户操作,第三个选项将保留消息和时间以将电子邮件发送到数据库。拥有一个定期运行的作业,并在数据库中扫描必须发送电子邮件的符合条件的记录