/// <summary> /// Called by the <see cref="T:Quartz.IScheduler"/> when a <see cref="T:Quartz.ITrigger"/> /// fires that is associated with the <see cref="T:Quartz.IJob"/>. /// </summary> /// <remarks> /// The implementation may wish to set a result object on the /// JobExecutionContext before this method exits. The result itself /// is meaningless to Quartz, but may be informative to /// <see cref="T:Quartz.IJobListener"/>s or /// <see cref="T:Quartz.ITriggerListener"/>s that are watching the job's /// execution. /// </remarks> /// <param name="context">The execution context.</param> public void Execute(IJobExecutionContext context) { _logger = LogManager.GetCurrentClassLogger(); JobDataMap dataMap = context.JobDetail.JobDataMap; EconomicReleaseUpdateJobSettings settings; try { settings = JsonConvert.DeserializeObject <EconomicReleaseUpdateJobSettings>((string)dataMap["settings"]); } catch (Exception e) { _logger.Error(e, "Failed to deserialize data update job settings"); return; } _logger.Info($"Data Update job {settings.Name} triggered."); _broker.Error += _broker_Error; var startDate = DateTime.Now.AddBusinessDays(-settings.BusinessDaysBack); var endDate = DateTime.Now.AddBusinessDays(settings.BusinessDaysAhead); var req = new EconomicReleaseRequest(startDate, endDate, dataLocation: DataLocation.ExternalOnly, dataSource: settings.DataSource); var releases = _broker.RequestEconomicReleases(req).Result; //no async support in Quartz, and no need for it anyway, this runs on its own thread _logger.Trace($"Economic release update job downloaded {releases.Count} items"); JobComplete(); }
public EconomicReleasesModule(IMyDbContext context, IEconomicReleaseBroker erb) : base("/economicreleases") { this.RequiresAuthentication(); Get["/", runAsync : true] = async(_, token) => { var releases = context.EconomicReleases; var request = this.Bind <EconomicReleaseRequest>(); if (request == null) { // No request object, just return everything return(await releases.ToListAsync(token).ConfigureAwait(false)); } // filter and return return(await erb.RequestEconomicReleases(request).ConfigureAwait(false)); }; Get["/datasources"] = _ => erb.DataSources.Keys.ToList(); }