• Quartz.Net系列(四):Quartz五大构件(Scheduler,Job,Trigger,ThreadPool、JobStore)之ThreadPool、JobStore解析


    整体示意图:

    1.DefaultThreadPool

    如果不存在PropertyThreadPoolType,那么就使用DefaultThreadPool

    var threadPoolTypeString = cfg.GetStringProperty(PropertyThreadPoolType).NullSafeTrim();
    if (threadPoolTypeString != null
        && threadPoolTypeString.NullSafeTrim().StartsWith("Quartz.Simpl.SimpleThreadPool", StringComparison.OrdinalIgnoreCase))
    {
        // default to use as synonym for now
        threadPoolTypeString = typeof(DefaultThreadPool).AssemblyQualifiedNameWithoutVersion();
    }
    
    Type tpType = loadHelper.LoadType(threadPoolTypeString) ?? typeof(DefaultThreadPool);
    
    try
    {
        tp = ObjectUtils.InstantiateType<IThreadPool>(tpType);
    }
    catch (Exception e)
    {
        initException = new SchedulerException("ThreadPool type '{0}' could not be instantiated.".FormatInvariant(tpType), e);
        throw initException;
    }
    tProps = cfg.GetPropertyGroup(PropertyThreadPoolPrefix, true);

    最终的执行都是要委托给线程池:默认10个工作线程[WorkThread]+一个调度线程[QuartzSchedulerThread]

    QuartzSchedulerThread

    QuartzSchedulerThread=> public async Task Run()
    

    2.RAMJobStroe

    如果不存在PropertyJobStoreType,那么就使用RAMJobStore

    Type jsType = loadHelper.LoadType(cfg.GetStringProperty(PropertyJobStoreType));
    try
    {
        js = ObjectUtils.InstantiateType<IJobStore>(jsType ?? typeof(RAMJobStore));
    }
    catch (Exception e)
    {
        initException = new SchedulerException("JobStore of type '{0}' could not be instantiated.".FormatInvariant(jsType), e);
        throw initException;
    }

    获取最近的trigger

    private readonly SortedSet<TriggerWrapper> timeTriggers = new SortedSet<TriggerWrapper>(new TriggerWrapperComparator()); 

    通过JobRunShell运行Job 

  • 相关阅读:
    .NET 动态向Word文档添加数据
    .NET FileUpLoad上传文件
    Jquery 客户端生成验证码
    ASP.NET MVC 5 基本构成
    .NET 发布网站步骤
    Jquery 选择器大全
    .NET 知识整理笔记
    .NET 三层架构
    C#知识整理笔记
    .NET MD5加密解密代码
  • 原文地址:https://www.cnblogs.com/vic-tory/p/13129674.html
Copyright © 2020-2023  润新知