我有一份工作,我想跟踪50个最新的运行。出于某种原因,它似乎并不像状态被存储在我的简单PROTOTYP:在Quartz.net中每次执行后都不会持久JobData
[PersistJobDataAfterExecution]
public class ApiJob : IJob
{
private const string JobRunsKey = "jobRuns";
private const int HistoryToKeep = 50;
private const string UrlKey = "Url";
public void Execute(IJobExecutionContext context)
{
var jobDataMap = context.JobDetail.JobDataMap;
var url = context.JobDetail.JobDataMap.GetString(UrlKey);
var client = new RestClient(url);
var request = new RestRequest(Method.POST);
var response = client.Execute(request);
var runs = new List<JobRun>();
if (jobDataMap.ContainsKey(JobRunsKey))
{
runs = (List<JobRun>) jobDataMap[JobRunsKey];
}
Console.WriteLine("I'm running so fast!");
runs.Insert(0, new JobRun(){Message = "Hello", Result = JobResult.Ok, TimeForRun = DateTime.UtcNow});
while (runs.Count > HistoryToKeep)
{
runs.RemoveAt(HistoryToKeep);
}
jobDataMap.Put(JobRunsKey, runs);
}
}
我尝试存储新的列表与jobDataMap.Put(JobRunsKey, runs)
但下一次我触发键从JobDataMap
缺少的工作。有什么建议么?
您正在使用哪个数据存储? – jvilalta 2013-04-06 00:51:25
@jvilalta,SQL服务器。创建作业时,所有内容都存储在jobdata中,但在执行时尝试添加列表不起作用。 – 2013-04-06 06:32:23