zoukankan      html  css  js  c++  java
  • Quartz.net 实现单线程执行Job

    使用Quartz.net的时候经常会遇到一种情况,就是job执行速度过慢,而Quartz.net默认也是并发执行的,这就导致一种情况,之前的job还没做完,第二个就开始了,在某些业务场景下这种情况容易造成数据错乱,那么这个时候就需要把执行改成单线程执行,解决起来很简单,就是在job类加注解[DisallowConcurrentExecutionAttribute]

    具体实现方式如下,以abp vnext 实现的quartz.net为例子:

        [DisallowConcurrentExecutionAttribute]
        public class QueryWork : QuartzBackgroundWorkerBase
        {
            private IAppService _appService;
            public QueryWork(IAppService appService)
            {
                _appService = appService;
                JobDetail = JobBuilder.Create<QueryWork>().WithIdentity(nameof(QueryWork)).Build();
                Trigger = TriggerBuilder.Create().WithIdentity(nameof(QueryWork))
                    .WithDailyTimeIntervalSchedule(s => s.WithIntervalInSeconds(5)).Build();
            }
            public async override Task Execute(IJobExecutionContext context)
            {
                await _appService.QueryAsync();
            }
        }
  • 相关阅读:
    原来 是 需要的,
    传说中的 拉伸,
    date + 排序,
    两个 header,
    招财铃,负责模块,
    一个字母,
    一个词,
    vue+webpack静态资源路径引用
    Webstorm 的 Tab 键调整缩进值
    ES6常用语法
  • 原文地址:https://www.cnblogs.com/wcoolly/p/14747133.html
Copyright © 2011-2022 走看看