本文作者:小黑黑

[Quartz.Net]Quartz.Net - Scheduler的初始化配置

小黑黑 1年前 ( 2019-03-13 ) 783 抢沙发
[Quartz.Net]Quartz.Net - Scheduler的初始化配置摘要:         我们使用new StdSchedulerFactory()时使用的是Quartz.N...

        我们使用new StdSchedulerFactory()时使用的是Quartz.Net的默认配置,比如线程数,默认数量是10个线程,但是如果我们想要自己指定线程数该怎么做呢?有4种方式来初始化Scheduler

一、使用NameValueCollection来初始化

public static async Task Init()
{
      //设置NameValueCollection
      NameValueCollection nameValueCollection = new NameValueCollection()
      {
           { "quartz.scheduler.instanceName", "myScheduler"},   //设置调度器的实例名称
           { "quartz.threadPool.ThreadCount", "12"}             //设置线程数
      };

      ISchedulerFactory schedulerFactory = new StdSchedulerFactory(nameValueCollection);

      IScheduler scheduler = await schedulerFactory.GetScheduler();

      await scheduler.Start();

      SchedulerMetaData metaData = await scheduler.GetMetaData();

      Console.WriteLine($"调度器实例名称:{metaData.SchedulerName}");
      Console.WriteLine($"线程数:{metaData.ThreadPoolSize}");
}

123.PNG

二、用App.config或web.config配置

<!--App.config配置文件-->

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="quartz" type="System.Configuration.NameValueSectionHandler, System,  Version=3.0.8.0, Culture=neutral, PublicKeyToken=f6b8c98a402cc8a4"/>
  </configSections>

  <quartz>
    <add key="quartz.scheduler.instanceName" value="myScheduler" />     <!--配置Scheduler实例的名称-->
    <add key="quartz.threadPool.ThreadCount" value="15" />              <!--配置Scheduler线程数-->
  </quartz>
</configuration>

public static async Task Init()
{
      
      ISchedulerFactory schedulerFactory = new StdSchedulerFactory();

      IScheduler scheduler = await schedulerFactory.GetScheduler();

      await scheduler.Start();

      SchedulerMetaData metaData = await scheduler.GetMetaData();

      Console.WriteLine($"调度器实例名称:{metaData.SchedulerName}");
      Console.WriteLine($"线程数:{metaData.ThreadPoolSize}");
}

123.PNG

三、使用quartz.config配置

# quartz.config 配置文件
# 配置Scheduler实例名称
quartz.scheduler.instanceName = myScheduler

# 配置线程数
quartz.threadPool.ThreadCount = 20

public static async Task Init()
{
      
      ISchedulerFactory schedulerFactory = new StdSchedulerFactory();

      IScheduler scheduler = await schedulerFactory.GetScheduler();

      await scheduler.Start();

      SchedulerMetaData metaData = await scheduler.GetMetaData();

      Console.WriteLine($"调度器实例名称:{metaData.SchedulerName}");
      Console.WriteLine($"线程数:{metaData.ThreadPoolSize}");
}

123.PNG

四:使用环境变量配置

public static async Task Init()
{
      //将参数设置到环境变量中,实际开发中可以在电脑属性环境变量中设置
      Environment.SetEnvironmentVariable("quartz.scheduler.instanceName", "myScheduler");
      Environment.SetEnvironmentVariable("quartz.threadPool.ThreadCount", "12");
      
      ISchedulerFactory schedulerFactory = new StdSchedulerFactory();

      IScheduler scheduler = await schedulerFactory.GetScheduler();

      await scheduler.Start();

      SchedulerMetaData metaData = await scheduler.GetMetaData();

      Console.WriteLine($"调度器实例名称:{metaData.SchedulerName}");
      Console.WriteLine($"线程数:{metaData.ThreadPoolSize}");
}

123.PNG

这四种配置的优先级:NameValueCollection > 环境变量配置 > App.config > quartz.config

分享到: 网站分享代码

发表评论

快捷回复:

评论列表 (暂无评论,783人围观)参与讨论

还没有评论,来说两句吧...