博客园不常在线

有问题联系微信

微信号

微信公众号

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 

posted @   Code技术分享  阅读(619)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示