在AbpVnext中简单使用原生的Quartz.net
1:一个静态帮助类
using Quartz; using Quartz.Impl; using Quartz.Core; using System; using System.Threading.Tasks; namespace GDBS.LogService.HttpApi.Hosting { public class QuartzHelper { public static async Task DoWork<T>(int Seconds = 10, int RepeatCount = int.MaxValue, string cronExpressionStr = null) where T : IJob, new() { ISchedulerFactory schedulerFactory = new StdSchedulerFactory(); IScheduler scheduler = schedulerFactory.GetScheduler().Result; IJobDetail jobDetail = JobBuilder.Create<T>().Build(); TriggerBuilder trigger = TriggerBuilder.Create(); if (cronExpressionStr == null) { trigger.WithSimpleSchedule(c => c.WithIntervalInSeconds(Seconds).WithMisfireHandlingInstructionNextWithRemainingCount().WithRepeatCount(RepeatCount)); } else { trigger.WithCronSchedule(cronExpressionStr); } var builderTrigger = trigger.Build(); await scheduler.ScheduleJob(jobDetail, builderTrigger); await scheduler.Start(); } } }
2:在AbpVnext中使用,实现接口,继承IJob
/// <summary> /// ******************** /// </summary> [DisallowConcurrentExecution] public class QQ爱Quartz03Services : IQQ爱Quartz03Services, ITransientDependency, IJob { public async Task Execute(IJobExecutionContext context) { try { await GetProvinQQ爱TypeInfoEveryCity(); await QQ爱RedisHelper.GetRedisDB(5).ListRightPushAsync(LogServiceQuartzConsts.Log_quartzCountInfo, JsonConvert.SerializeObject(new QuartzLogInfoDto { addtime = DateTime.Now, quartz_type = 3, quartz_name = "测试Quartz03Services abc" })); } catch (Exception) { } } }
3:加入进来
public override void OnApplicationInitialization(ApplicationInitializationContext context) { var app = context.GetApplicationBuilder(); app.UseStaticFiles(); app.UseRouting(); app.UseCors(); app.UseSwagger(); app.UseSwaggerUI(options => { options.SwaggerEndpoint("v1/swagger.json", "MainteReinfor Api"); options.DocumentTitle = "***相关服务Swagger LMZ"; }); app.UseAuthentication(); app.UseMiddleware<CurrentSysAuthenticationMiddleware>(); app.UseAuthorization(); app.UseMiddleware<CustomUserClaimMiddleware>(); app.UseConfiguredEndpoints(); //==========在abp尾部新增如下code即可 Task.Factory.StartNew(() => { var lodata = LmzQuartzHelper.DoWork<AbcService>(CronString: "0 15 3,12 * * ? *").Id; var aa = LmzQuartzHelper.DoWork<LogRedisQuartzService>(Seconds: 10).Id; var disdata = LmzQuartzHelper.DoWork<QuartzLogsCheckDisDataService>(CronString: "0 0 1/1 * * ? *").Id; }); }
4:个人建议项目发布在Linux Docker环境中来使用,IIS存在定时回收的机制,
生产环境中妥妥的运行中,下面为简单的测试消费记录日志

如有疑问或者错误的地方,请跟帖,本人会第一时间答复以及相互学习,谢谢!个人会不断的上传自己的学习心得!
好了今天就先到这里,下次有时间再更新,如果存在不合理的地方,欢迎大家多多指教留言!!!

浙公网安备 33010602011771号