我正在为 Quartz.NET 开发一个基本的 Web 客户端,除其他外,它支持在运行时修改作业的 JobDataMap。
我的工作装饰有以下属性,我相信这些属性是使工作有状态所必需的:
[PersistJobDataAfterExecution]
[DisallowConcurrentExecution]
public class SampleTenantJob : IJob { ... }
在运行时,我执行以下代码,但 JobDataMap 没有持久化:
public void UpdateJobProperties(string jobName, string groupName, IDictionary<string, object> properties)
{
IJobDetail job;
if (!TryGetJob(jobName, groupName, out job))
return;
foreach (var property in properties)
{
if (job.JobDataMap.ContainsKey(property.Key) && property.Value != null)
{
job.JobDataMap.Put(property.Key, property.Value);
}
}
}
我最初认为这是因为我正在使用XMLSchedulingDataProcessorPlugin
for 作业,但我已经尝试了内存(RAMStore)AdoJobStore
并且仍然无法保留JobDataMap
远程客户端所做的更改。