c# - 如何读取 Quartz.Net 作业的 JOB_DATA?
问题描述
我有一个读取和写入 IJobExecutionContext.JobDetail.JobDataMap 的 Quartz 作业,并且数据(似乎是)保存在 dbo.QRTZ_JOB_DETAILS 的 JOB_DATA 列中。
虽然这工作正常(作业的每次运行都读取/写入持久数据),但我想(从 Quartz 作业本身的上下文之外)查询JobDataMap 中的值。理想情况下,我也希望能够写出这份工作的价值观。
我可以(大概)从 SQL 数据表中读取该列,并将其反序列化回 JobDetail 对象(?),但这似乎有点“后门”——我不确定如何反序列化它。
或者,也许我可以实例化一些 Quartz 对象来为我完成繁重的工作。例如(伪代码):
var jobDetail = Quartz.JobDetail.Deserialize("MyJob")
var jobDataMap = jobDetail.JobDataMap;
var key = "MyKey";
var oldValue = jobDataMap.Contains(key) ? jobDataMap.GetIntValue(key) : 0;
var newValue = fnCrazyCalculation(oldValue);
jobDataMap.PutAsString(key, newValue);
有什么建议么 ?
*** 编辑 ***
我尝试创建一个这样的实例:
var schedulerFactory = new StdSchedulerFactory();
var scheduler = schedulerFactory.GetScheduler();
var jobKey = new Quartz.JobKey("MyJob","Work");
var jobDetail = scheduler.GetJobDetail(jobKey);
...但这似乎需要在 app.config 中设置 Quartz 属性,但我不确定我是否可以设置刚好足以从数据库中获取作业详细信息。
IE。我从实际的 Job 项目中复制了这个:
<quartz>
<add key="quartz.plugin.xml.type" value="Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin, Quartz" />
<add key="quartz.plugin.xml.fileNames" value="~/QuartzJobs.xml" />
<add key="quartz.dataSource.quartzDataSource.connectionStringName" value="ConsoleApp3.Properties.Settings.Quartz" />
<add key="quartz.dataSource.quartzDataSource.provider" value="SqlServer-20" />
<add key="quartz.jobStore.type" value="Quartz.Impl.AdoJobStore.JobStoreTX, Quartz" />
<add key="quartz.jobStore.driverDelegateType" value="Quartz.Impl.AdoJobStore.SqlServerDelegate, Quartz" />
<add key="quartz.jobStore.dataSource" value="quartzDataSource" />
<add key="quartz.jobStore.tablePrefix" value="QRTZ_" />
<add key="quartz.jobStore.clustered" value="true" />
<add key="quartz.scheduler.instanceId" value="AUTO" />
</quartz>
...但这似乎需要 QuartzJobs.xml 定义和实际实现该作业的类。
解决方案
推荐阅读
- c++ - STL binary_search() 实现
- java - 我可以从 Java 模块中排除导出的包吗?
- vba - 如何将预定义的字符串设置为“wb”
- php - 在某些数据库队列上在 PHP 中隐藏链接
- android - How disable same origin policy of iframe inside android webview?
- php - Showing success logout message on the redirected page
- javascript - 在应用程序脚本中过滤二维数组
- python - 在 TensorFlow 中将张量保存为图像
- java - 如何在 Java 的正则表达式中使用“和”运算符
- javascript - 承诺-mysql 返回承诺