zoukankan      html  css  js  c++  java
  • 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 

  • 相关阅读:
    Unity 状态机切换
    Unity3d 血条脚本
    最简单的Python群聊
    EFCore 多字段排序分页法
    搭建react+redux+vscode+typescript开发环境
    C# 4格A*自动寻径
    Sql删除表中多余的重复记录
    ABP弹出提醒用户的错误信息
    百度地图 驾车路线编辑粗浅实例
    .NetCore3.1 WebApi中Swagger配置
  • 原文地址:https://www.cnblogs.com/vic-tory/p/13129674.html
Copyright © 2011-2022 走看看