我正在尝试使用Java创建Quartz调度程序,它将能够调用API并传递数据。
我对石英完全陌生,但现在我明白了工作的概念和如何创造一个。我理解触发器的概念以及如何触发触发器,我也了解调度程序是如何工作的。
我遇到的困难是如何传递需要传递给API的信息。我有一个调用API的例子,数据被输入到DB中,但是信息已经硬编码到类中,被传递到JobDetails中。
即。用户向系统传递一条消息,需要在12小时内(而不是在此之前)发送给用户,所以我计划创建一个作业和一个触发器,将执行时间设置为12小时。如何将消息传递给调度程序?这条消息应该存储在哪里?我想做的事有可能吗?我有没有误解夸兹能做什么?
谢谢您抽时间见我。如能提供任何协助,将不胜感激。
发布于 2017-01-16 18:59:14
看看JobDataMap。如果要为每个用户操作创建一个新作业,则可以将消息存储在其中,该消息将在执行过程中可用。
JobDataMap保存职务实例的状态信息。 在将作业添加到调度程序时,只存储一次JobDataMap实例。在每次执行带有@PersistJobDataAfterExecution注释的作业后,它们也会被重新持久化。 JobDataMap实例也可以用触发器存储。如果您有一个存储在调度程序中的作业,以便多个触发器定期/重复使用,则这一点可能很有用,但是对于每个独立的触发,您希望为作业提供不同的数据输入。 在执行时传递给作业的JobExecutionContext还包含一个方便的JobDataMap,它是将触发器的JobDataMap (如果有的话)的内容合并到作业的JobDataMap (如果有的话)的结果。
如果您有一个任务,但是对于要创建一个新触发器的每个用户操作,您可以遵循给定的这里解决方案。
第三个选项是,对于每个用户操作,持久化消息和时间发送电子邮件到数据库。有一个定期运行的作业,并在数据库中扫描必须发送电子邮件的合格记录。
https://stackoverflow.com/questions/41680506
复制相似问题