public async Task StartAsync() { _scheduler = await new StdSchedulerFactory().GetScheduler(); await _serviceProvider.DoDapperServiceAsync(DefaultDbConfig, async (unitOfWork) => { IJobConfigRepository jobConfigRepository = ConnectionFactory.GetConnectionProvider(DefaultDbConfig.ConnectionType).GetRepository <IJobConfigRepository>(unitOfWork); IHolidayCalendarRepository holidayCalendarRepository = ConnectionFactory.GetConnectionProvider(DefaultDbConfig.ConnectionType).GetRepository <IHolidayCalendarRepository>(unitOfWork); var activeJobConfigs = await jobConfigRepository.GetActiveJobConfigs(); List <HolidayCalendar> holidayCalendars = new List <HolidayCalendar>(); if (activeJobConfigs.Any(r => r.HolidayCalendarId.HasValue)) { holidayCalendars = (await holidayCalendarRepository.GetAllAsync()).ToList(); Quartz.Impl.Calendar.HolidayCalendar calendar = new Quartz.Impl.Calendar.HolidayCalendar(); foreach (var holidayCalendar in holidayCalendars) { if (activeJobConfigs.Any(r => r.HolidayCalendarId == holidayCalendar.Id)) { await AddCalendar(holidayCalendar); } } } foreach (var activeJobConfig in activeJobConfigs) { IJobDetail job = CreateJobDetail(activeJobConfig); ITrigger trigger = CreateJobTriggerAsync(activeJobConfig, holidayCalendars); await _scheduler.ScheduleJob(job, trigger); } _scheduler.ListenerManager.AddJobListener(QuartzJobListener, GroupMatcher <JobKey> .AnyGroup()); await _scheduler.Start(); }); }
public async Task <List <JobConfig> > GetAllJobConfigs() { return(await _serviceProvider.DoDapperServiceAsync(DefaultDbConfig, async (unitOfWork) => { IJobConfigRepository jobConfigRepository = ConnectionFactory.GetConnectionProvider(DefaultDbConfig.ConnectionType).GetRepository <IJobConfigRepository>(unitOfWork); var results = await jobConfigRepository.GetAllAsync(); return results.ToList(); })); }
public async Task DeleteJob(Guid id) { await _serviceProvider.DoDapperServiceAsync(DefaultDbConfig, async (unitOfWork) => { IJobConfigRepository jobConfigRepository = ConnectionFactory.GetConnectionProvider(DefaultDbConfig.ConnectionType).GetRepository <IJobConfigRepository>(unitOfWork); var dbJobConfig = await jobConfigRepository.GetAsync(id); await jobConfigRepository.DeleteAsync(dbJobConfig); await _jobManager.UnScheduleJob(dbJobConfig); }); Logger.LogInformation($"DeleteJob:{id}"); }
public async Task ResumeJob(Guid id) { var jobConfig = await _serviceProvider.DoDapperServiceAsync(DefaultDbConfig, async (unitOfWork) => { IJobConfigRepository jobConfigRepository = ConnectionFactory.GetConnectionProvider(DefaultDbConfig.ConnectionType).GetRepository <IJobConfigRepository>(unitOfWork); var result = await jobConfigRepository.GetAsync(id); return(result); }); await _jobManager.ResumeJob(jobConfig); Logger.LogInformation($"ResumeJob:{id}"); }
public async Task AddJob(JobConfig jobConfig) { jobConfig.Id = Guid.NewGuid(); await _serviceProvider.DoDapperServiceAsync(DefaultDbConfig, async (unitOfWork) => { IJobConfigRepository jobConfigRepository = ConnectionFactory.GetConnectionProvider(DefaultDbConfig.ConnectionType).GetRepository <IJobConfigRepository>(unitOfWork); await jobConfigRepository.InsertAsync(jobConfig); if (jobConfig.IsActive) { await _jobManager.ScheduleJob(jobConfig); } }); Logger.LogInformation($"AddJob:{JsonConvert.SerializeObject(jobConfig)}"); }
public async Task UpdateJob(JobConfig jobConfig) { await _serviceProvider.DoDapperServiceAsync(DefaultDbConfig, async (unitOfWork) => { IJobConfigRepository jobConfigRepository = ConnectionFactory.GetConnectionProvider(DefaultDbConfig.ConnectionType).GetRepository <IJobConfigRepository>(unitOfWork); var dbJobConfig = await jobConfigRepository.GetAsync(jobConfig.Id); if (dbJobConfig == null) { throw new SpriteException("未找到Job配置信息"); } await _jobManager.UnScheduleJob(dbJobConfig); await jobConfigRepository.UpdateAsync(jobConfig); await _jobManager.ScheduleJob(jobConfig); }); Logger.LogInformation($"UpdateJob:{JsonConvert.SerializeObject(jobConfig)}"); }
public async Task ActiveJob(Guid id, bool isActive) { await _serviceProvider.DoDapperServiceAsync(DefaultDbConfig, async (unitOfWork) => { IJobConfigRepository jobConfigRepository = ConnectionFactory.GetConnectionProvider(DefaultDbConfig.ConnectionType).GetRepository <IJobConfigRepository>(unitOfWork); var dbJobConfig = await jobConfigRepository.GetAsync(id); if (dbJobConfig.IsActive == isActive) { throw new SpriteException($"job已经处于{(isActive ? "激活" : "未激活")}状态"); } dbJobConfig.IsActive = isActive; await jobConfigRepository.UpdateAsync(dbJobConfig); if (isActive) { await _jobManager.ScheduleJob(dbJobConfig); } else { await _jobManager.UnScheduleJob(dbJobConfig); } }); Logger.LogInformation($"ActiveJob:{id},{isActive}"); }
public async Task UpdateHolidayCalendar(HolidayCalendar holidayCalendar) { await _serviceProvider.DoDapperServiceAsync(DefaultDbConfig, async (unitOfWork) => { IHolidayCalendarRepository holidayCalendarRepository = ConnectionFactory.GetConnectionProvider(DefaultDbConfig.ConnectionType).GetRepository <IHolidayCalendarRepository>(unitOfWork); IJobConfigRepository jobConfigRepository = ConnectionFactory.GetConnectionProvider(DefaultDbConfig.ConnectionType).GetRepository <IJobConfigRepository>(unitOfWork); var dbHolidayCalendar = await holidayCalendarRepository.GetAsync(holidayCalendar.Id); if (dbHolidayCalendar == null) { throw new SpriteException("未找到假期信息"); } await holidayCalendarRepository.UpdateAsync(holidayCalendar); var activeJobConfigs = await jobConfigRepository.GetActiveJobConfigs(); foreach (var activeJobConfig in activeJobConfigs) { if (activeJobConfig.HolidayCalendarId.HasValue && activeJobConfig.HolidayCalendarId.Value == holidayCalendar.Id) { await _jobManager.UnScheduleJob(activeJobConfig); } } await _jobManager.DeleteCalendar(holidayCalendar.Id); await _jobManager.AddCalendar(holidayCalendar); foreach (var activeJobConfig in activeJobConfigs) { if (activeJobConfig.HolidayCalendarId.HasValue && activeJobConfig.HolidayCalendarId.Value == holidayCalendar.Id) { await _jobManager.ScheduleJob(activeJobConfig); } } }); Logger.LogInformation($"UpdateHolidayCalendar:{JsonConvert.SerializeObject(holidayCalendar)}"); }